Hardening consulting

Un peu de RDP pour bien commencer l'année 2018 (avec tous mes voeux), dans ce billet je vais parler d'une implémentation permettant de redimensionner la fenêtre dans xfreerdp.

Contexte

Dans FreeRDP, on disposait déjà de l'option smart-sizing qui permet de demander à voir la fenêtre avec un certain ratio: 100, 150 ou 180 pour cent.

Avec la spécification MS-RDPEDISP, le client peut envoyer la configuration de ses écrans au serveur en temps réel, ce qui permet notament au serveur de réagir quand le client branche ou débranche un écran, ou bien que la résolution change. Par exemple avec mstsc en mode plein écran, si on change la résolution quand il est iconomisé, et qu'on le ramène au premier plan.

Mais on peut faire un usage détourné de cette spécification pour que la fenêtre de FreeRDP devienne redimensionnable: en gros on annonce comme taille d'écran, la taille de la fenêtre client.

Lire la suite…

J'ai eu l'occasion pour une mission avec un client de regarder du coté du H264 et du décodage matériel en utilisant notamment VAAPI. L'occasion de parler un peu d'un sujet que je découvrais.

Mais c'est quoi VAAPI ?

Dixit ubuntu France:

Video Acceleration API (abrégé en VA API, VA-API ou VAAPI) est une bibliothèque open source (libVA) 
et une interface de programmation qui visent à permettre le rendu vidéo par le processeur graphique 
sur les systèmes dérivés d'UNIX (comme Linux ou FreeBSD) utilisant X Window System.

En fait cette API est aussi utilisable "en direct" avec un périphérique DRM, par exemple avec un DRI render node: bien pratique pour offloader le rendu sur le GPU sans interface graphique. Mais il est aussi possible, bien sûr, de s'en servir depuis wayland.

Dans l'idée on nourrit le GPU avec du flux vidéo (H264, VP9 ou MPEG) et il fait le rendu directement dans une surface.

Lire la suite…

Et oui encore un article sur du RDP ! J'ai fait quelques expériences avec la reconnection automatique et je profite de cet article pour en parler un peu.


La reconnection automatique

La reconnection automatique permet au client RDP de se reconnecter à un serveur quand il y a eu un coupure, et ceci sans ressaisir les logins / mots de passe. La coupure peut être due à une coupure réseau ou même un crash serveur. L'exemple typique consiste à rabattre l'écran de son portable avec une connection RDP en cours, et quand on réouvre le client se reconnecte tout seul.


Lire la suite…

En regardant les visites Piwik, je me suis aperçu qu'il y avait un certain intérêt avec mon article précédent sur le DJI Phantom 3. J'ai aussi vu qu'une personne a le même objectif que moi: faire un logiciel pour diriger son Phantom 3 à partir d'un ordinateur portable.

Il est sans doute temps de parler un peu de mes découvertes sur le protocole qui est parlé entre le Phantom 3, la télécommande, la caméra et l'application mobile.

Les bases du protocole

Entête

Les paquets sont découpés en deux: une entête et une charge utile.

L'entête a le format suivant:

-------------------------------------------------------------------------
| 0 0 0 0 0 0 0 0 | 0 0 1 1 1 1 1 1 | 1 1 1 1 2 2 2 2 | 2 2 2 2 2 2 3 3 |
| 0 1 2 3 4 5 6 7 | 8 9 0 1 2 3 4 5 | 6 7 8 9 0 1 2 3 | 4 5 6 7 8 9 0 1 |
|-----------------------------------------------------------------------|
|  magic - 0x55   |    payload length    |  version   |     crc8        |
-------------------------------------------------------------------------

Il y a un octet magique à 0x55. Il est suivit par un champs lenVer sur 16 bits. Il contient la taille de la charge utile et la version du protocole sur les 6 bits du haut. Enfin sur le dernier octet, on a une crc8 des 3 premiers octets.

La charge utile est donc limitée à 4096 octets. Comme l'octet magique et que la version du protocole ne changent pas, seul la taille de la charge utile influence le calcul de la crc8. Ce qui veut dire qu'on peut même faire une grosse table qui donnerait le résultat en fonction de la seule information de la taille.

Lire la suite…

Un petit billet suite à mes aventures récentes autour du multi-écran dans firerds (donc coté serveur). Sur le papier celà semblait relativement simple, une petite balade de santé. Mais comme souvent avec RDP j'ai eu plein de surprises, mauvaises évidement ;)

Expérimenter le multi-écran

Pour commencer, il faut une plate-forme de test. Le plus simple, c'est de mettre deux écrans sur un PC et de lancer un xfreerdp:

xfreerdp /v:myserver /multimon /f

Lire la suite…

Je n'avais jamais regardé du coté d'Android, mais suite à l'achat du drone et de l'analyse de la capture, j'ai dû mettre les mains dans le cambouis et regarder un peu comment était faite l'application de DJI. Cet article va permettre de faire une introduction aux techniques de reverse d'applications Android.

Lire la suite…

L'année se termine, les fêtes, la compta à boucler, un peu de vacances et surtout les bonnes conférences du CCC.

Avant toute chose, les habituels voeux de fin d'année: bonne année, bonne santé, que tous vos projets se réalisent. On espère que 2016 sera mieux que 2015 sur le plan national et international. Et ce serait bien que ça commence avec une sortie de l'état d'urgence en Février prochain, histoire qu'on se retrouve dans la normalité du droit.

Au CCC, cette année, j'ai trouvé qu'il y avait pas mal de conférence en allemand. Alors je n'écoute pas facilement l'allemand mais je trouve que c'est quand même très bien qu'il y ai des talks dans la langue de ceux qui hébergent. De plus beaucoup des vidéos ont été traduites dans les deux langues ce qui est super. J'ai regardé quelques conférences cette année, il y en a beaucoup de très bien, et

Lire la suite…

Un petit article suite à une erreur que j'ai faite en codant UWAC (Using Wayland As Client), ma librairie pour faire du wayland coté client dans l'esprit de la Xlib. Les symptômes étaient les suivants: une application se servant d'UWAC fonctionnait bien avec le X11 compositor et freezait avec le RDP compositor. Après des tests, il s'est avéré que c'est le pixman renderer qui semblait induire ça (en utilisant le X11 compositor et en se servant du pixman renderer, on avait le même comportement).

Lire la suite…