Valider ses followers avec TrueTwit

TrueTwit est un service permettant de vérifier « l’humanité » de ses followers Twitter.

Le fonctionnement est le suivant :

Lorsqu’une personne s’abonne à votre profil, un message privé (DM) lui ai envoyé avec un lien de validation :

screenshot_at_jan_28_20-04-03

Avec l’édition « Basic » (gratuite) de TrueTwit, un e-mail de notification est envoyé une fois la validation effectuée. Cela évite de se faire « polluer » par des notifications d’abonnements de la part de robots.

Avec l’édition « Premium » (20$ par an), en plus de la notification, le nouveau follower peut être automatiquement suivi après validation afin d’échanger des DM.

Site officiel : http://truetwit.com/

IDA : This application failed to start because it could not find or load the Qt platform plugin « xcb »

Lors de l’installation d’IDA sous CentOS 7, j’ai été confronté à l’erreur suivante en lançant idaq :

This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".

Available platform plugins are: linuxfb, minimal, xcb.

Reinstalling the application may fix this problem.
Abandon (core dumped)

Version courte

Installation des dépendances manquantes :

yum install -y libSM.i686 libICE.i686 fontconfig.i686 freetype.i686 dbus-libs.i686 gtk2.i686

Version longue

Commençons par regarder avec strace la librairie que cherche IDA :

$ strace ./idaq 2>&1|grep xcb
open("/opt/ida/plugins/platforms/libqxcb.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
open("/opt/ida/plugins/platforms/libqxcb.so", O_RDONLY|O_CLOEXEC) = 3
open("/opt/ida/plugins/platforms/../../libX11-xcb.so.1", O_RDONLY|O_CLOEXEC) = 3
stat64("/opt/ida/plugins/platforms/libqxcb.so", {st_mode=S_IFREG|0775, st_size=9812, ...}) = 0
write(2, "This application failed to start"..., 211This application failed to start because it could not find or load the Qt platform plugin "xcb"
Available platform plugins are: linuxfb, minimal, xcb.

On peut voir que le fichier réclamé s’appelle libqxcb.so. Celui-ci est d’abord recherché dans /opt/ida/plugins/platforms/libqxcb.so et… il existe (open() aurait retourné -1 si ce n’était pas le cas) !

Le problème n’est donc pas sa présence (inutile de chercher à installer des packages).

Continuons avec un ldd pour voir ses dépendances sur libqxcb.so :

$ ldd /opt/ida/plugins/platforms/libqxcb.so | grep 'not found'
        libSM.so.6 => not found
        libICE.so.6 => not found
        libfontconfig.so.1 => not found
        libfreetype.so.6 => not found

Problème: il lui manque quatre fichiers, qu’il s’agit cette fois d’installer par packages :

yum install -y libSM.i686 libICE.i686 fontconfig.i686 freetype.i686

Les dépendances étant à présent résolues, cela devrait fonctionner… ou pas :

Failed to create dbus connection. Are dbus libraries properly installed?

Nouveau coup de strace :

open("/lib/i686/libdbus-1.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/lib/libdbus-1.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 10
(...)
write(1, "Failed to create dbus connection"..., 73Failed to create dbus connection. Are dbus libraries properly installed?

Cette fois, il a beau chercher, libdbus-1.so est introuvable. On peut voir qu’il s’attends à le trouver dans le système, voyons le package correspondant :

$ yum whatprovides libdbus-1.so*|grep i686
1:dbus-libs-1.6.12-17.el7.i686 : Libraries for accessing D-BUS
1:dbus-libs-1.6.12-17.el7.i686 : Libraries for accessing D-BUS

Application 32-bits oblige, ce sera dbus-lib.i686.

Nouvel essai et erreur cette fois côté GTK. On voit par strace que le fichier est /opt/ida/plugins/platformthemes/libqgtk2.so :

stat64("/opt/ida/plugins/platformthemes/libqgtk2.so", {st_mode=S_IFREG|0775, st_size=363008, ...}) = 0

Contrôle des dépendances :

$ ldd /opt/ida/plugins/platformthemes/libqgtk2.so | grep 'not found'
	libgtk-x11-2.0.so.0 => not found
	libgdk-x11-2.0.so.0 => not found
	libpango-1.0.so.0 => not found

Toutes ces librairies sont fournies directement ou en dépendance du package gtk2 :

yum install -y gtk2.i686

IDA est à présent fonctionnel 🙂

Créer une image Windows 10 à jour

Sommaire :

  1. Télécharger l’image ISO de base
  2. Télécharger les mises à jour
  3. Créer l’ISO

Télécharger l’ISO

Se rendre sur www.microsoft.com/fr-fr/software-download/windows10 et télécharger l’outil.

Exécuter et demander à télécharger uniquement l’ISO :

Télécharger les mises à jour

WSUS Offline Update permet de télécharger toutes les mises à jour pour une version de Windows donnée. Il est capable de détecter celles déjà téléchargées.

Se rendre sur download.wsusoffline.net, télécharger et exécuter le programme. La dernière version à l’écriture de cet article est la 10.9.

Cocher la case correspondant à l’architecture souhaitée (x64 dans mon cas) :

000018-wsus-offline-update-10-9-generator
L’outil télécharge forcément les mises à jour pour toutes les langues

Inclure les définitions Defender :

000017-wsus-offline-update-10-9-generator

Comme vous pouvez le voir, on peut se limiter aux mises à jour de sécurité (« Use ‘security only updates’ instead of ‘quality rollups’ »)

Sélectionner un dossier comme destination en cochant Copy updates for selected products into directory :

000016-WSUS Offline Update 10.9 - Generator.png

Et cliquer sur le bouton Start. Vous pouvez aller faire une longue balade…

000007-wget-74-http___download-microsoft-com_download_1_6_b_16b06f60-3b20-4ff2-b699
WSUS Offline Update va télécharger une à une toutes les mises à jour disponibles, toutes langues confondues.

Une fois terminé, il vous propose de consulter les logs de téléchargement.

Créer l’ISO

Maintenant que l’ISO de base et les différentes mises à jour sont téléchargés, nous pouvons passer à la création de l’ISO.

Extraire les fichiers de l’ISO de Windows 10 (téléchargé avec MediaCreationTool depuis le site de Microsoft) par l’explorateur (en la montant) ou via 7-zip.

Télécharger NTlite sur son site officiel, l’installer et le lancer.

Ajouter le dossier où a été extraite l’ISO :

000026-ntlite

Une fois ajouté, on peut voir les différentes éditions disponibles :

000025-ntlite

Sélectionner l’édition qui vous intéresse et cliquer sur Charger (via clic-droit ou dans l’onglet « Image ») :

000027-ntlite

 

Le message suivant s’affiche, l’accepter :

Patienter un (long) instant pendant la conversion + lecture.

NTLite est très puissant, on peut s’en servir pour supprimer des langues, configurer les  fonctionnalités, etc. A noter que certaines fonctions sont réservées aux éditions payantes.

Passer dans l’onglet Mises à jour (section Intégrer) et ajouter le dossier où toutes les màj ont été téléchargées :

Une fenêtre d’erreur risque de s’afficher pour lister les mises à jour déjà embarquées ainsi que les fichiers qui n’en sont pas (tant pis pour Silverlight…). On peut l’ignorer.

Une fois la personnalisation terminée, aller dans Appliquer (section Terminer) et cocher les cases « Compression ESD » et « Créer l’ISO » puis lancer la création.

000031-NTLite.png

L’opération va prendre, pour changer, pas mal de temps. A l’issue de la première étape (« Intégration des mises à jour »), un popup s’affiche lorsque des mises à jour sont ignorées ou en erreur.

Utiliser ensuite un outil comme Rufus pour créer une clé USB à partir de l’ISO générée.

Windows Subsystem for Linux Distribution Switcher

Windows Subsystem for Linux (WSL) intègre par défaut l’environnement utilisateur d’Ubuntu suite à un partenariat avec Canonical.

Concrètement, lorsque WSL est installé et que bash est lancé pour la première fois, le rootfs d’Ubuntu 16.04 est décompressé dans le répertoire utilisateur (%AppLocalData%\lxss\rootfs). Exactement comme le ferait un OpenVZ ou (à peu près) Docker.

Le projet Windows Subsystem for Linux Distribution Switcher – indépendant de Microsoft – permet de remplacer le rootfs d’Ubuntu par celui d’autres distributions. Il ne s’agit uniquement de remplacer des fichiers pour l’utilisateur courant, cela ne touche pas à WSL lui-même et peut aussi se faire manuellement (voir la procédure avec OpenSuSE).

Voici une liste des distributions disponibles à ce jour :

debian – 8.5, 8, jessie, latest | jessie-backports | oldstable | oldstable-backports | sid | stable | stable-backports | stretch | testing | unstable | 7.11, 7, wheezy | wheezy-backports | rc-buggy | experimental
ubuntu – 12.04.5, 12.04, precise-20160707, precise | 14.04.5, 14.04, trusty-20160802, trusty | 16.04, xenial-20160809, xenial, latest | 16.10, yakkety-20160806.1, yakkety, devel
fedora – latest, 24 | 23 | 22 | 21 | rawhide | 20, heisenbug
centos – latest, centos7, 7 | centos6, 6 | centos5, 5 | centos7.2.1511, 7.2.1511 | centos7.1.1503, 7.1.1503 | centos7.0.1406, 7.0.1406 | centos6.8, 6.8 | centos6.7, 6.7 | centos6.6, 6.6 | centos5.11, 5.11
opensuse – 42.1, leap, latest | 13.2, harlequin | tumbleweed
mageia – latest, 5
oraclelinux – latest, 7, 7.2 | 7.1 | 7.0 | 6, 6.8 | 6.7 | 6.6 | 5, 5.11
alpine – 3.1 | 3.2 | 3.3 | 3.4, latest | edge
crux – latest, 3.1
clearlinux – latest, base

Voyons sa mise en place.

Pour commencer, il faut Python 3.6 d’installer sur la machine à télécharger sur le site officiel :

python-3-6-0-32-bit-setup

Récupérer ensuite la dernière version de WSL-Distribution-Switcher à l’adresse suivante : https://github.com/RoliSoft/WSL-Distribution-Switcher/releases/download/v0.1.0/WSL-Distribution-Switcher_v0.1.0.zip

Extraire l’archive dans C:\ (cela donne C:\WSL-Distribution-Switcher) et ouvrir une ligne de commande dedans :

wsl-distribution-switcher

Installer de nouvelles distributions

Télécharger le ou les distributions – on va voir qu’il est possible de passer d’une à l’autre – :

get-source.exe centos:latest
get-source.exe fedora:latest

c__windows_system32_cmd-exe

Lorsqu’une nouvelle distribution est téléchargée, il faut l’installer une fois. Je précise que bash doit être fermé.

install.exe centos:latest
rootsimon-laptop_-_mnt_c_wsl-distribution-switcher
Bienvenue sur CentOS 7 !

Passer de l’une à l’autre

Pour switcher de l’une à l’autre, on utilisera le script switch.exe. Les distributions disponibles sont listées s’il est appelé sans argument :

000002-c__windows_system32_cmd-exe

Exemple avec OpenSuSE 42.2 :

switch.exe opensuse:42.2

000003-rootsimon-laptop_-_mnt_c_wsl-distribution-switcher

Docker !

Attention : cela ne fonctionne pas avec toutes les images, loin de là.

WSL-Distribution-Switcher permet également de partir d’une image Docker en allant chercher sur Docker Hub grâce au script get-prebuild.exe :

get-prebuild.exe kalilinux/kali-linux-docker
install.exe kalilinux/kali-linux-docker

Note : J’ai régulièrement l’erreur Accès refusé avec install.exe. Il suffit d’insister un peu (= le relancer) et cela a toujours fini par passer.

Dans le cas d’une erreur 0x80070002, il s’agirait d’une erreur de permissions (source et source) mais je suis preneur d’une solution…

C’est cassé !

Si l’installation part en cacahuète, il est possible de repartir de zéro avec les trois commandes suivantes :

lxrun /uninstall /full /y
lxrun /install /y
lxrun /setdefaultuser root /y

Il faudra ensuite réinstaller ses distributions.

Zimbra Connector : MAPI n’a pu charger LSMSSP.DLL

Suite à la désinstallation du connecteur Outlook pour Zimbra, Outlook refusait de démarrer avec l’erreur suivante :

microsoft-outlook
MAPI n’a pas pu charger le service d’information LSMSSP.DLL

Le wiki Zimbra donne toute une série de commandes à exécuter… qui ne fonctionne pas avec Outlook 2016 (les répertoire indiqués n’existent pas).

La solution est en faite très simple : le connecteur créé un nouveau profil Outlook « Zimbra » dans lequel est mentionné le fichier DLL manquant. Il suffit donc de le supprimer depuis le panneau de configuration (en vue icônes) > Mail (Microsoft Office 2016).

Au prochain lancement, Outlook proposera soit de créer un nouveau profil soit reprendra celui par défaut (nommé Outlook).

Git : exécuter des commandes sur toutes les branches

Voici un script que j’utilise pour fetch + merge récursivement tous les repos git à partir du répertoire courant. Il traite toutes les branches locales :

git for-each-ref --format='%(refname:short)' refs/heads/ | while read -r branch
do
    # Changement de branche
    git checkout "${branch}"

    # Code à exécuter sur cette branche
    # Exemple avec un git pull
    git pull
done

Exemple de script que j’utilise pour mettre à jour toutes les branches d’un repo Git :

current_branch="$(git rev-parse --abbrev-ref HEAD)"
echo " * Current branch : ${current_branch}"

echo " * Fetching all changes from Git..."
git fetch --all

git for-each-ref --format='%(refname:short)' refs/heads/ | while read -r branch
do
    if git diff --exit-code "${branch}" "origin/${branch}"
    then
        echo " * No change"
    else
        echo " * Moving to branch ${branch}..."
        git checkout "${branch}"
        echo " * Merging with origin branch..."
        git merge "origin/${branch}" "${branch}"
    fi
done

echo " * Moving back to ${current_branch}..."
git checkout "${current_branch}"

Sortie :

 * Current branch : master
 * Fetching all changes from Git...
Fetching origin
(...)
Already on 'master'
Your branch is behind 'origin/master' by 2 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)
 * Merging with origin branch...
Updating dfb2637..78c0d21
Fast-forward
 doc/syntastic-checkers.txt | 9 ++++++++-
 plugin/syntastic.vim       | 2 +-
 2 files changed, 9 insertions(+), 2 deletions(-)
 * Moving back to master...
Already on 'master'

Source : fait maison 🙂