Utilisation d’un serveur Dell PowerEdge R210

Conversion d’un OEMR XL R210 en PowerEdge R210

Attention, faire ceci peut être dommageable et empêcher le démarrage de votre ordinateur.

Il faut récupérer le BIOS du PowerEdge R210 sur la page de téléchargement puis copier l’exécutable sur une clé USB et démarrer dessus.

Ensuite lancer la commande :

nomdubios.exe -wipeclean -forcetype

Cela permet d’effacer et mettre à jour la table DMI du serveur tout en mettant à jour le BIOS

Utilisation de la console IDRAC6 Enterprise

Installation de java:

sudo apt install java-package

make-jpkg jre-8u231-linux-x64.tar.gz

sudo dpkg -i oracle-java8-jre_8u231_amd64.deb

Configuration de la securité:

sudo nano /usr/lib/jvm/oracle-java8-jre-amd64/lib/security/java.security

Trouver la ligne jdk.tls.disabledAlgorithms du fichier /usr/lib/jvm/java-11-openjdk-amd64/conf/security/java.security et supprimer RC4,

Puis lancer :

/usr/lib/jvm/oracle-java8-jre-amd64/bin/ControlPanel

Dans l’onglet Sécurité, modifier la liste des sites avec exception et mettre l’adresse de l’IDRAC

Lancement en ligne de commande:

/usr/lib/jvm/oracle-java8-jre-amd64/bin/javaws viewer.jnlp

Lancement dans Firefox:

preference=>Applications mettre jnlp pour le fichier et sélectionner /usr/lib/jvm/oracle-java8-jre-amd64/bin/javaws

Mise à jour du Firmware Intel Management Engine (ME) par UEFI

Attention, faire ceci peut être dommageable et empêcher le démarrage de votre ordinateur.

Introduction

Suite au passage sous linux de mon HP ProBook 650 G2, il ne m’était plus possible de mettre à jour le firmware ME. Les récentes failles de sécurités de celui-ci m’ont poussé à trouver une solution.

Outils disponibles

Il faut récupérer les outils UEFI de mise à jour chez HP : Intel Management Engine (ME) Firmware Update Tool for DOS or EFI et le dernier firmware (pour moi le 11.0.27.3000)

Utilisation

Créer une clé usb avec un shell /efi/boot/bootx64.efi (par exemple celui de TianoCore )
Y copier les fichiers de l’outil EFI du firmware précédemment téléchargé.

Redémarrer et booter sur la clé.
Aller ensuite sur la partition de la clé avec la commande :
FS1:
Puis lancer l’outil MEInfo.efi pour vérifier si c’est une version H ou LP
Et enfin lancer la mise à jour avec la commande (dans mon cas la version LP)
FWUpdLcl.efi -f 110273000_LP.bin

Modifier le logo du BIOS d’un PC HP

Attention, faire ceci peut être dommageable et empêcher le démarrage de votre ordinateur.

Introduction

Je cherchais depuis quelques temps s’il était possible de changer l’image du bios qui s’affiche lorsqu’on boot, avec l’uefi on peut souvent faire pleins de trucs. Ça permet de le customiser, voir de mettre son adresse mail, en cas de vol, ben ça fait chier l’acheteur (jusqu’à ce qu’il trouve ce billet).

Outils disponibles

Il existe l’outil eRepLogo d’HP mais il n’est pas compatible avec le BIOS d’un ProBook 650 G2.

Par contre l’outil HP CustomLogoApp.efi du pack pour Z440/Z640/Z840 fonctionne.

Utilisation

Je me suis fait un petit script pour tout automatiser, à partir d’un exemple trouvé dans l’outil UEFI d’intel pour tester les processeurs et paf, j’ai un nouvel écran de démarrage.
Le fichier doit faire 1024*768 d’après ce que j’ai compris et être un JPG. Je me fais donc une image 1920*1080 pour avoir ma bonne résolution puis je la passe en 1024*768 et la copie sur ma clé.

Liens supplémentaires

Release notes HP Ereplogo Utility
Release notes HP Z440/Z640/Z840 Workstations BIOS Utilities for Windows
Page Web de l’outil Intel Processor Diagnostic Tool for UEFI

Astuces Wireshark

Filtrer les requêtes dhcp en fonction d’une adresse mac

dhcp.hw.mac_addr == b8:27:eb:d3:cc:dd
dhcp.hw.mac_addr[0:3] == b8:27:eb

Filtrer les requêtes dhcp et le trafique en fonction d’une adresse mac

dhcp.type == 2 || eth.addr[0:3]==b8:27:eb

Filtrer les requêtes HTTP GET en fonction d’une adresse mac

eth.addr[0:3]==b8:27:eb && http.request.method == « GET »

Capturer et décrypter du trafic wifi

Configurer l’interface wifi en mode « monitor » et sélectionner le canal à écouter :

sudo ip link set INTERFACE down
sudo iw INTERFACE set monitor control
sudo ip link set INTERFACE up
sudo iw dev INTERFACE set channel CHANNEL

Générer une clé psk avec le SSID et le mot de passe du wifi :

wpa_passphrase mon_ssid mon_mot_de_passe

et la rentrer dans wireshark sous Editer=>Préférences=>Protocol=>IEEE 802.11

Ensuite sélectionner l’interface wifi et cocher la case monitor puis capturer des paquets.

Il faut avoir une authentification au wifi (filtre eapol) pour pouvoir décrypter les paquets.

Capturer et décrypter du trafic https

Il faut créer la variable d’environnement SSLKEYLOGFILE :

export SSLKEYLOGFILE=~/.ssl-key.log

puis dans Wireshark, aller dans le menu Preference=>Protocols=>TLS=>(Pre)-Master-Secret log filename et y mettre le chemin du fichier pointé par la variable d’environnement

Configuration des touches de luminosité avec acpid

Suite au passage sous Ubuntu 16.10 sur mon HP ProBook 650 G2, le rétro éclairage ne fonctionnait plus avec le réglage précédent.
Pour contourner le problème il est possible de passer par le daemon acpid, après détection des touches avec l’outil acpi_listen :
video/brightnessup BRTUP 00000086 00000000 K
video/brightnessup BRTUP 00000086 00000000 K

Il faut donc créer 3 fichiers :
/etc/acpi/hp-probook650g2-backlight.sh
[bash]
#!/bin/sh

# this directory is a symlink on my machine:
KEYS_DIR=/sys/class/backlight/intel_backlight/
STEP=25
STEPTIME=0.01

test -d $KEYS_DIR || exit 0

MIN=0
MAX=$(cat $KEYS_DIR/max_brightness)
VALOLD=$(cat $KEYS_DIR/brightness)

if [ "$1" = down ]; then
VAL=$((VALOLD-STEP))
else
VAL=$((VALOLD+STEP))
fi

if [ "$VAL" -lt $MIN ]; then
VAL=$MIN
elif [ "$VAL" -gt $MAX ]; then
VAL=$MAX
fi

if [ "$VAL" -gt "$VALOLD" ]; then
VALSEQ=$(seq $VALOLD $VAL)
else
VALSEQ=$(seq $VALOLD -1 $VAL)
fi

for IX in $VALSEQ; do
echo $IX > $KEYS_DIR/brightness
sleep $STEPTIME
done
[/bash]

/etc/acpi/events/hp-probook650g2-backlight-down
[bash]
# /etc/acpi/events/hp-probook650g2-backlight-down
# This is called when the user presses the key brightness
# down button and calls /etc/acpi/hp-probook650g2-backlight.sh for
# further processing.

event=video/brightnessdown BRTDN 00000087 00000000 K
action=/etc/acpi/hp-probook650g2-backlight.sh down
[/bash]

/etc/acpi/events/hp-probook650g2-backlight-up
[bash]
# /etc/acpi/events/hp-probook650g2-backlight-up
# This is called when the user presses the key brightness
# down button and calls /etc/acpi/hp-probook650g2-backlight.sh for
# further processing.

event=video/brightnessup BRTUP 00000086 00000000 K
action=/etc/acpi/hp-probook650g2-backlight.sh up
[/bash]

Configuration des touches de luminosité et son sous compiz/cairo-dock

Suite à l’acquisition d’un HP ProBook 650 G2 et à son passage sous Ubuntu 16.04 avec Cairo-Dock, les touches de gestion de luminosité et du volume n’étaient pas prise en compte.
Pour les faire fonctionner, je suis passé par le Gestionnaire de Configuration CompizConfig(ccsm).
Menu Général->Commandes

Ajout des commandes

Commandes
Pour la luminosité j’utilise :
[bash]xbacklight -dec 5
xbacklight -inc 5[/bash]
Et pour le volume, soit par alsa mixer :
[bash]amixer -D pulse sset Master 5%-
amixer -D pulse sset Master 5%+
amixer -D pulse set Master 1+ toggle[/bash]
soit avec pactl (pulse audio) :
[bash]pactl set-sink-mute 0 false ; pactl set-sink-volume 0 -5%
pactl set-sink-mute 0 false ; pactl set-sink-volume 0 +5%
pactl set-sink-mute 0 toggle[/bash]

Ajout des Touches

Touches
Pour la luminosité cela donne :
XF86MonBrightnessDown
XF86MonBrightnessUp

Et pour le volume :
XF86AudioLowerVolume
XF86AudioRaiseVolume
XF86AudioMute

Ces touches peuvent aussi être retrouvées avec la commande :
[bash]xev | sed -n ‘s/.*keycode *\([0-9]\+\)[^,]*, \([^)]\+\)).*$/keycode \1, keysym \2/p'[/bash]

Astuces PDF

Récupérer la 1ere page de plusieurs document et les merger dans un seul

for file in Logiciel/*.pdf; do pdftk "$file" cat 1 output "$(basename "${file%.pdf}-page1.pdf")"; done
pdftk *.pdf cat output ../page1.pdf

Extraire 2 pages d’un schéma et l’anonymiser

pdftk Projet_Conf.pdf cat 18-19 output microchip.pdf
pdftk microchip.pdf output uncompressed.pdf uncompress
sed -e "s/NomClient/FauxNom/g" <uncompressed.pdf >modified.pdf
pdftk modified.pdf output final.pdf compress

Supprimer le watermark

La procédure est la même qur pour anonymiser un document :
Décompresser le fichier pdf :
pdftk original.pdf output uncompressed.pdf uncompress
Supprimer la chaine de caractere :
sed -e "s/watermarktextstring/ /" uncompressed.pdf > unwatermarked.pdf
Recompresser le document :
pdftk unwatermarked.pdf output fixed.pdf compress

Astuces VirtualBox

Convertir un disque dur vmdk en vdi

VBoxManage clonehd --format VDI fichier.vmdk fichier.vdi

Modifier la taille d’un disque virtualbox

Pour passer un disque à 40Go :

VBoxManage modifyhd fichier.vdi --resize 40000

Modifier le System UUID

VBoxManage setextradata "test VM" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemUuid" "8fb169be-9288-4fa0-b176-35362568998f"

Modifier l’adresse Mac d’une VM

VBoxManage modifyvm "test VM" --macaddress1 0800271B00E8

Modifier le nom du processeur

Pour avoir par exemple :
« Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz »
Il suffit de rajouter les champs correspondants :

VBoxManage setextradata "test VM" VBoxInternal/CPUM/HostCPUID/80000002/eax 0x20202020
VBoxManage setextradata "test VM" VBoxInternal/CPUM/HostCPUID/80000002/ebx 0x6e492020
VBoxManage setextradata "test VM" VBoxInternal/CPUM/HostCPUID/80000002/ecx 0x286c6574
VBoxManage setextradata "test VM" VBoxInternal/CPUM/HostCPUID/80000002/edx 0x43202952
VBoxManage setextradata "test VM" VBoxInternal/CPUM/HostCPUID/80000003/eax 0x2865726f
VBoxManage setextradata "test VM" VBoxInternal/CPUM/HostCPUID/80000003/ebx 0x20294d54
VBoxManage setextradata "test VM" VBoxInternal/CPUM/HostCPUID/80000003/ecx 0x332d3769
VBoxManage setextradata "test VM" VBoxInternal/CPUM/HostCPUID/80000003/edx 0x51303437
VBoxManage setextradata "test VM" VBoxInternal/CPUM/HostCPUID/80000004/eax 0x5043204d
VBoxManage setextradata "test VM" VBoxInternal/CPUM/HostCPUID/80000004/ebx 0x20402055
VBoxManage setextradata "test VM" VBoxInternal/CPUM/HostCPUID/80000004/ecx 0x30372e32
VBoxManage setextradata "test VM" VBoxInternal/CPUM/HostCPUID/80000004/edx 0x007a4847

Il est possible de récupérer ces lignes avec cpuid sous linux de la façon suivante :

cpuid -r |grep "80000002\|80000003\|80000004"|head -n 3|awk '{print $1 "/eax" $3 "\n" $1 "/ebx" $4 "\n" $1 "/ecx" $5 "\n" $1 "/edx" $6};'|sed 's/eax=/ /'|sed 's/ebx=/ /'|sed 's/ecx=/ /'|sed 's/edx=/ /'|sed '/^0x/!d'|sed 's/^0x/VBoxManage setextradata \"test VM\" VBoxInternal\/CPUM\/HostCPUID\//'

ou avec une ancienne version :

cpuid |grep "80000002\|80000003\|80000004"|awk '{print "0x" $1 "/eax 0x" $2 "\n0x" $1 "/ebx 0x" $3 "\n0x" $1 "/ecx 0x" $4 "\n0x" $1 "/edx 0x" $5};'|sed 's/^0x/VBoxManage setextradata \"test VM\" VBoxInternal\/CPUM\/HostCPUID\//'

Ajouter un vrai disque dur

VBoxManage internalcommands createrawvmdk -filename sdc.vmdk -rawdisk /dev/sdc

Détecter les VMs en cours d’utilisation

VBoxManage list runningvms
"ubuntu domogik" {4a4990b1-bc4d-41fc-8734-a8323d77f676}
"debian" {e3d11314-8e1f-4ce6-8aae-53b3bea439be}

Sauvegarder l’état d’une VM

VBoxManage controlvm "ubuntu domogik" savestate
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

Compresser le disque d’une VM

Il faut tout d’abord écrire des 0 sur tout l’espace libre :
– sous Windows, utiliser SDelete avec la commande sdelete64 c: -z
– sous Linux, utiliser zerofree avec la commande zerofree -v /dev/sda1
Puis arrêter la VM et lancer la commande
VBoxManage.exe modifymedium disk « fichier.vdi » –compact

Ajouter les extensions en ligne de commande

Voici un exemple pour lister les extensions présente, supprimer l’extension Oracle et installer la dernière version

VBoxManage list extpacks
sudo VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"
sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.2.18.vbox-extpack

Configurer une liaison série

Configurer la liaison série de la VM en « Tube Hôte », décocher la case « Se connecter au pipe/socket existant » et mettre le chemin /tmp/vboxcom1

minicom -o -b 115200 -8 -con -w -D unix#/tmp/vboxcom1

Ignorer la date du Host

Turn off time syncing:
vboxmanage setextradata [VMname] « VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled » « 1 »

Turn it back on:
vboxmanage setextradata [VMname] « VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled » « 0 »

Réinstallation d’une rom officielle sur un Sony Xperia avec Flashtool

Introduction

Voici la procédure à suivre pour flasher un Xperia E3 avec rom opérateur SFR vers la version stock « Customised FR »(version officielle Sony française), le tout sous linux avec le logiciel flashtool et avec le bootloader d’origine !
Le logiciel flashtool permet le téléchargement et le flashage de rom officielles Sony, il télécharge la dernière version disponible sur les serveurs officiels.

Installation et configuration

Il faut télécharger flashtool
Puis le décompresser et lors du premier lancement couper le contenu du répertoire firmwares et le copier dans ~/.flashTool/firmwares

Téléchargement du firmware

Attention le téléchargement peut prendre entre 10 et 30 minutes en fonction de la connexion.
Cliquer dans le menu Devices->Check Updates
puis double cliquer sur « D22XX Sony Xperia E3 »,
cliquer sur D2203,
double cliquer sur « 1287-0508 Customized FR » pour afficher la dernière version disponible et de nouveau double cliquer sur « 1287-0508 Customized FR ».
Le firmware se télécharge, une barre de progression indique l’avancement du téléchargement.
Sélectionner tous les fichiers et les passer à droite dans « Firmware Content » puis cliquer sur Create et patienter le temps que la barre de progression finisse et d’avoir le message « Bundle creation finished »
Fermer la fenêtre de sélection du firmware.

Flashage

Cliquer sur l’icône éclair et sélectionner « flashmode » puis Ok.
Sélectionner le firmware et cliquer sur le bouton flash.
Passer le téléphone en mode flashmode :
Téléphone éteint, maintenir la touche vol – et brancher le câble USB sur l’ordinateur.
Patienter le temps du flashage(plusieurs minutes).
Une fois terminé, débrancher le téléphone, l’allumer et patienter quelques minutes.

Utilisation d’OpenOCD pour programmer une clé RZUSBstick avec l’interface Bus Pirate

Introduction

Le but de la programmation de la clé RZUSBstick est d’utiliser le firmware killerbee pour pouvoir sniffer un réseau ZigBee avec wireshark.
Et cela avec au choix l’interface Bus Pirate ou une interface ftdi Amontec JTAGkey.

Installation d’OpenOCD

Il faut installer la version 0.9.0 ou supérieure d’OpenOCD contenant le support pour l’Atmel AT90USB128.

Compilation pour mes 2 interfaces :

[bash]cd openocd-code
./configure –prefix=/opt/openocd-code –enable-ftdi –enable-buspirate
make
sudo make install[/bash]

Pins du JTAG sur la clé usb

Voici l’emplacement du connecteur JTAG sur la clé (Pin 1 en rouge)
Emplacement JTAG
Et voici l’emplacement des pins sur ce connecteur
Schema JTAG

Configuration pour l’interface Bus Pirate

Dans cet exemple mon interface utilise le firmware 6.1.
Pour l’interface Bus Pirate je me suis fait le fichier openocd_bp.cfg suivant :

[bash]# for avr
set _CHIPNAME avr
set _ENDIAN little
# jtag speed
#
# Buspirate with OpenOCD support
#
# http://dangerousprototypes.com/bus-pirate-manual/
#

interface buspirate

# you need to specify port on which BP lives
buspirate_port /dev/ttyUSB0

# communication speed setting
buspirate_speed fast; #normal ;# or fast

# voltage regulator Enabled = 1 Disabled = 0
#buspirate_vreg 0

# pin mode normal or open-drain
#buspirate_mode normal

# pullup state Enabled = 1 Disabled = 0
#buspirate_pullup 0

# this depends on the cable, you are safe with this option
reset_config srst_only

#adapter_khz 4500
reset_config srst_only
adapter_nsrst_delay 100
#jtag scan chain
if { [info exists CPUTAPID ] } {
set _CPUTAPID $CPUTAPID
} else {
set _CPUTAPID 0x4978203F
}
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
set _TARGETNAME [format "s.cpu" $_CHIPNAME]
target create $_TARGETNAME avr -endian $_ENDIAN -chain-position $_TARGETNAME

$_TARGETNAME configure -work-area-virt 0 -work-area-phys 0x20000000 -work-area-size 16384 -work-area-backup 0
flash bank avr1.flash avr 0 0 0 0 $_TARGETNAME

#avr_program.cfg:
# default ports
telnet_port 4444
gdb_port 3333
tcl_port 6666
init
reset init
verify_ircapture disable
halt
wait_halt
poll
#avr mass_erase 0
flash probe 0
flash write_image erase /home/esver/Perso/Zigbee/killerbee-read-only/killerbee/firmware/kb-rzusbstick-001.hex
reset run
shutdown
[/bash]

J’ai connecté le jtag de ma clé en suivant les connexion suivantes :
Jtag Bus Pirate
Les pins sont donc reliées comme ceci :
Clé <=> Bus Pirate
GND <=> GND
TCK <=> CLK
TDO <=> MISO
TMS <=> CS
TDI <=> MOSI
SRST<=> AUX

J’ai ensuite lancé la commande pour programmer mon composant :

[bash]/opt/openocd-code/bin/openocd -f openocd_bp.cfg[/bash]

Et voilà une clé programmée !

Configuration pour l’interface ftdi Amontec JTAGkey2 (plus rapide que la Bus Pirate)

Pour l’interface ftdi je me suis fait le fichier openocd_ftdi.cfg suivant :

[bash]# for avr
set _CHIPNAME avr
set _ENDIAN little
# jtag speed
interface ftdi
ftdi_device_desc "Amontec JTAGkey-2"
ftdi_vid_pid 0x0403 0xcff8

ftdi_layout_init 0x0c08 0x0f1b
ftdi_layout_signal nTRST -data 0x0100 -noe 0x0400
ftdi_layout_signal nSRST -data 0x0200 -noe 0x0800

adapter_khz 4500
reset_config srst_only
adapter_nsrst_delay 100
#jtag scan chain
if { [info exists CPUTAPID ] } {
set _CPUTAPID $CPUTAPID
} else {
set _CPUTAPID 0x4978203F
}
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
set _TARGETNAME [format "s.cpu" $_CHIPNAME]
target create $_TARGETNAME avr -endian $_ENDIAN -chain-position $_TARGETNAME

$_TARGETNAME configure -work-area-virt 0 -work-area-phys 0x20000000 -work-area-size 16384 -work-area-backup 0
flash bank avr1.flash avr 0 0 0 0 $_TARGETNAME

#avr_program.cfg:
# default ports
telnet_port 4444
gdb_port 3333
tcl_port 6666
init
reset init
verify_ircapture disable
halt
wait_halt
poll
#avr mass_erase 0
flash probe 0
flash write_image erase /home/esver/Perso/Zigbee/killerbee-read-only/killerbee/firmware/kb-rzusbstick-001.hex
reset run
shutdown
[/bash]

Le pinout de l’interface est disponible ici.
Les pins sont donc reliées comme ceci :
Clé <=> JTAG
VTref<=> VREF(1)
GND <=> GND(20)
TCK <=> TCK
TDO <=> TDO
TMS <=> TMS
TDI <=> TDI
SRST<=> SRST_N

J’ai ensuite lancé la commande pour programmer mon composant :

[bash]/opt/openocd-code/bin/openocd -f openocd_ftdi.cfg[/bash]

Et voilà une clé programmée !