Pense-bête
Cette page regroupes des trucs dont je me sers régulièrement mais dont je suis incapable de me souvenir lors que j'en ai besoin
Contents
1. tcpdump
1.1. Commandes pratiques
ping: tcpdump -i any icmp
dhcp: tcpdump -i any -vvv -s 1500 '((port 67 or port 68) and (udp[38:4] = 0x3e0ccf08))'
1.2. Options utilies
-K ou --dont-verify-checksums: Ignore la vérification des chksumps.
-v/-vv/-vvv: verbose/more info/all info
-X: print data in ascii and hex
-x: print data in hexa
-A: print each packet
1.3. filter expressions
- man 7 pcap-filter pour le manuel complet
type: host, net, port et portrange.
proto: ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp et udp
dst/src host|net/port/portrange: source/destination host/netkwork/port
gateway host: packet passe par la machine host (gateway)
ip/ip6: ipV4 ou ipV6
operateurs: and, not, or, ()
2. Debug en python
2.1. Mise en place
- Utiliser le module pdb en ajoutant les
import pdb
pdb.set_trace()
2.2. Quelques commandes disponibles dans la console
args : affiche les arguments de la fonction en cours.
continue : reprend l'execution jusqu'au prochain point d'arrêt(breakpoint).
list [m], [n] : affiche les 11 lignes de code. Si m et/ou n sont passés, affiches les lignes m à n.
next : continue l'execution jusqu'au prochain return ou la fin de la fonction en cours.
p expression : évalue l'expression dans le conexte actuel d'execution.
pp expression : comme p, mais l'affichage se fait avec pretty print
quit : quitte le debugger.
return : continue l'execution jusqu'à prochain retrun.
step : execute la prochaine instruction et s'arrête dés que possible.
where : indique la ligne actuel du programme.
3. Cyrus
4. OpenSSL
4.1. Validation
Validatation du contenu d'un CSR: openssl req -text -noout -verify -in csrFile.csr
Validatation du contenu d'une clé privée: openssl rsa -check -in privateKey.key
Validatation du contenu d'un crt: openssl x509 -text -noout -in certificate.crt
Validatation du contenu d'un PKCS: openssl pkcs12 -info -in pkcsFile.p12
4.2. Conversion
Conversion d'un fichier de type DER en PEM: openssl x509 -inform der -out fichier.pem -in fichier.cer
Conversion d'un fichier de type PEM en DER: openssl x509 -outform der -out fichier.der -in fichier.pem
Conversion d'un fichier de type PKCS12 en PEM: openssl pkcs12 -out fichier.pem -nodes -in fichier.pkcs
Il est possible d'utiliser les options -nocerts ou -nokeys pour récupérer uniquement la clé privée ou les certificats respectivement.
Conversion d'un fichier de type PEM en PKCS12: openssl pkcs12 -export -out certificate.pkcs -inkey privateKey.pem -in certificat.crt -certfile CACert.crt
4.3. Divers
Valider une clé et son CSR : comparer openssl rsa -noout -modulus -in KEY | openssl md5 et openssl req -noout -modulus -in CSR | openssl md5
Valider qu'une clé privée correspond au certificat: comparer openssl x509 -noout -modulus -in CERT | openssl md5 et openssl rsa -noout -modulus -in KEY | openssl md5
Validation du certificat https avec openssl: openssl s_client -servername www.glennie.fr -connect www.glennie.fr:443 (il est possible de préciser un répertoire contenant les CA par -CApath /etc/ssl/certs)
Validation du certificat smtps avec openssl: openssl s_client -connect mail.example.com:25 -starttls smtp
Afficher le certificat: openssl s_client -showcerts -servername www.glennie.fr -connect www.glennie.fr:443
Pour une validation de la chaine online, il est possible d'utiliser le site http://www.sslshopper.com/ssl-checker.htm
La chaine de validation peut-être recréée par le script shell https://github.com/zakjan/cert-chain-resolver/tree/shell/src
5. Java
5.1. Utilisation de IPV4 uniquement
Utiliser l'option -Djava.net.preferIPv4Stack=true lors de l'appel de l'executable de java!
5.2. Gestion des certificats sous JAVA
- Afficher les infos de la clé contenu dans un fichier au format PKCS12
keytool -list -storetype pkcs12 -keystore /tmp/toto.p12
- Affichera les infos de la clé et notamment l'ID de la clé
- Signer une applet avec un certificat au format PKCS12
jarsigner : jarsigner -storetype pkcs12 -keystore /tmp/toto.p12 applet.jar "ID de la Clé"
- Vérfier la signature d'une applet
jarsigner -verbose -verify -certs applet.jar
- Import d'un fichier PKCS12 dans un Keystore:
keytool -importkeystore -destkeystore KEY_STORE_FILE -srckeystore CERT.p12 -srcstoretype pkcs12 -alias Alias
- Lister le contenu d'un Keystore:
keytool -list -keystore KEY_STORE_FILE
- Ajout certificat auto signé dans le keystore par défaut:
keytool -keystore $JAVA_HOME/jre/lib/security/cacerts -import -file certificate.cer
Le mot de passe du keystore est changeit
6. Tomcat
6.1. Redéfinition de l'emplacement du keystore
Par défaut tomcat utilise le fichier cacerts. Il est possible de le redéfinir (pour des raisons de séurité, pour des raisons pratiques: utilisation d'un mot de passe différant, persistance des certificats auto-signés lors des mises à jours). Pour cela, il faut éditer le fichier /etc/default/tomcat55, ajouter:
-Djavax.net.ssl.keyStore=/path/to/keystore -Djavax.net.ssl.trustStore=/path/to/keystore : définit un nouveau keystore
-Djavax.net.ssl.keyStorePassword=motdepassedelamort: le password du keystore.
dans le fichier /etc/default/tomcat55 et relancer tomcat.
6.2. Forcer les servelets à utiliser un proxy
- Dans un environnement sécurisé, les applications en sont pas autorisées à accèder à internet sans passer par un proxy et c'est une contrainte forte dans environnement où il exite plusieurs DMZ. Dans le cas de servlets, qui utilisent des services Web, il est possible de définir un proxy global et forcer tous les servelts à utiliser ce proxy. Pour cela, il faut ajouter:
-Dhttp.proxyHost=urlduproxy_http : définition du serveur proxy pour le http.
-Dhttp.proxyPort=portduproxy_https : définition du port du serveur proxy pour le http.
-Dhttps.proxyHost=urlduproxy_https : définition du serveur proxy pour le https.
-Dhttps.proxyPort=portduproxy_https : définition du port du serveur proxy pour le https.
-Dhttp.nonProxyHosts=Host1|127.0.0.1 : indique les machines pour lesquelles le proxy ne doit pas être utilisé. Les machines doivent être séparées par des |
-Djava.net.useSystemProxies=true : force l'utilisation du proxy système.
dans le fichier /etc/default/tomcat55 et relancer tomcat.Dans le cas d'un autre serveur d'applications (WebLogic, par exemple), ces paramètres peuvent être ajoutées dans les options JAVA (La variable JAVA_OPTIONS).
6.3. Utilisation de IPv4 uniquement même si IPv6 est disponible
Toujours dans le même fichier /etc/default/tomcat55, ajouter l'option -Djava.net.preferIPv4Stack=true
7. Essbase Administration Services
Correction d'erreur MAX/L Api can't be load : éditer le fichier /hyprndata/hyperion/eas/server/bin/starEAS vérifier la ligne contenant export ESSLANG. La valeur doit être French_France.Latin1@Default. Dans l'installation par défaut, il manque t à la fin. Il faut, donc, rajouter le t à la fin !
8. Perl
8.1. One liner
- perl -p -i -e 'expression' : équivalente sed. Plusiers expressions peuvent être séparées par des ';'
- -e: perl expression !
- -p: print !
- -i: in-place; équivalent de sed -i
- -n : équivalent de sed -n
- -M: utilise un module ; equivalent de use
Ex 1: (sed)
echo "++++++oduq sdqsd qsdqs ACBCD----------" | perl -i -p -e 's/^\+*//g; s/\-*$//g ; s/(^.)(.*)/\u$1\L$2/'
Résultat: Oduq sdqsd qsdqs acbcd
Ex 2: Encodage et décodage Base64
echo coucou | perl -MMIME::Base64 -ne 'print encode_base64($_)' echo "Y291Y291Cg==" | perl -MMIME::Base64 -ne 'print decode_base64($_)'
8.2. Manipulation de date
- Il faut utiliser le module Date::Manip
Quelques exemples en bash :
- Nombre jours écoulés entre le dernier samedi et aujourd'hui:
expr $(perl -MDate::Manip -e 'print UnixDate(ParseDate("today"), "%e\n");') - $(perl -MDate::Manip -e 'print UnixDate(ParseDate("last saturday"), "%e\n");')
- Nombre jours écoulés entre le premier le premier mars 2008 et de l'année en cours et aujourd'hui:
expr $(perl -MDate::Manip -e 'print UnixDate(ParseDate("today"), "%j\n");') - $(perl -MDate::Manip -e 'print UnixDate(ParseDate("03/01"), "%j\n")')
- La date du prochain vendredi:
perl -MDate::Manip -e 'print UnixDate(ParseDate("next friday"), "%d/%m/%Y\n")'
- A quel jour correspond le 25/02/2008:
perl -MDate::Manip -e 'print UnixDate(ParseDate("02/25/2008"), "%A\n")'
- A quel jour en français correspond le 25/02/2008:
perl -MDate::Manip -e 'Date_Init("Language=French"); print UnixDate(ParseDate("02/25/2008"), "%A\n")'
* A quel jour en français correspond le 25/02/2008 en utilisant le format de date français (J/M/A)
perl -MDate::Manip -e 'Date_Init("Language=French", "DateFormat=non-US") ;print UnixDate(ParseDate("25/02/2008"), "%A\n")'
Pour l'aide sur le module perl s'obtient en tapant perldoc Date::Manip
9. Shell UNIX
9.1. awk
* Afficher les champs 3 à la fin:
awk '{for(i=3;i<=NF;i++){printf "%s ", $i}; printf "\n"}' myfile
9.2. Find
- Trouver le dernier fichier modifié dans une arborescence:
find DIR -type f -printf "%T@|%p\n" | sort -n | tail -n 1 | awk -F\| '{print $2}'
- Lister tous les fichier avec leur date de modification (du plus ancien au plus récent):
find DIR -type f -printf "%T@|%t|%p\n" | sort -n | awk -F\| '{print $2 " " $3}'
- Le fichier le plus gros dans une arborescence:
find . -type f -printf "%s|%p\n" | sort -n | tail -n 1 | awk -F\| '{print $2}'
- Les fichiers et répertoires avec le time stamp unix(t), nom du fichier complet(p), time stamp locale(t), uid(u), gid(g), taille(s) et le type(y)
find DIR -printf "%T@|%p|%t|%u|%g|%s|%y\n"
9.3. Renommage de fichiers
Source |
Destination |
Commande |
Commentaires |
01 File name.ext |
01 - File name.ext |
rename -v 's/(^\d+)(.*)\.ext/$1 - $2.ext/g' * |
Ajoute d'un '-' après le numéro d'ordre |
01 file Name.ext |
01 - File name.ext |
rename -v 's/(^\d+) (.)(.*)\.ext/$1 - \u$2\L$3.ext/g' * |
Ajoute d'un '-' après le numéro d'ordre et passe le premier caractère du nom du fichier en majuscule. |
9.4. Conversion de fichiers audio/video
9.4.1. Conversion de fichiers .flv vers .avi
ffmpg: ffmpeg -i file.flv file.avi
mencoder: mencoder -oac mp3lame -ovc lavc -o file.avi file.flv
9.4.2. Conversion m4a vers mp3
ffmpeg -i INPUT.m4a -acodec libmp3lame -ab 320k OUTPUT.mp3
9.5. Vérification du bon fonctionnement de postgrey
- Créer un petit script shell contenant
cat | nc -q 1 127.0.0.1 60000 << GEN_GLIST_REQ
request=smtpd_access_policy
protocol_state=RCPT
protocol_name=SMTP
client_address=10.0.0.1
client_name=unknown
helo_name=
sender=$RANDOM@$RANDOM.$RANDOM
recipient=$RANDOM@$RANDOM.$RANDOM
queue_id=
instance=$RANDOM.48a97e09.$RANDOM
size=0
GEN_GLIST_REQ
et lancer excuter le script. Si le démon greylist est actif, le message action=DEFER_IF_PERMIT Greylisted for XXX seconds sera affiché!
Pour le bon fonctionnement su script, il faut disposer de l'outil netcat(nc). Il faut également modifier le port et l'ip utilisé par postgrey (qui sont ici 6000 et localhost).
10. Solaris
Lister les interfaces réseaux: dladm show-dev
11. Windows
11.1. Administration du domaine AD à partir d'une machine Linux
Une notice entière est consacrée à cette section. Voir la notice AdministrationWindowsApartirDeLinux
11.2. Network Connexion Awarness
Désactiver l'icône Pas d'accès Internet : ajouter la clé NC_DoNotShowLocalOnlyIcon de type DWORD avec la valeur 1 sous HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Network Connections en utilisant regedit et rebooter la machine.
Désactiver détection de la connexion Internet: ajouter la clé EnableActiveProbing de type DWORD avec la valeur 0 sous HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\NlaSvc\Parameters\Internet en utilisant regedit.
11.3. ODBC
En fonction de l'architecture logicielle (32 ou 64 bits), il faut paramèrter le connecteur en utilisant la bonne version de l'ODBC Admin:
c:\windows\syswow64\odbcad32.exe pour la version 32 Bits
c:\windows\system32\odbcad32.exe pour la version 64 Bits
Par exemple, pour utiliser une connexion Mysql via excel (en 32 bits) sur machine windows 7 64 Bits, il faut utiliser c:\windows\syswow64\odbcad32.exe pour paramètrer la connexion ODBC.
12. Vmware
12.1. Snapshots
- Dans le snaphot manager:
- Delete All: supprime tous les snapshots, mais reste dans l'état actuel. - Goto : reprend l'execution à partir du snapshot donné. - Delete : supprime le snapshot selectionné.
13. Haproxy
Redirect 301 in front end section: http-request redirect code 301 location https://new.domaion.com%[url]%[query] if { hdr(Host) -i old.domain.com another.domain.com }
14. Divers
14.1. initramfs
Mise à jour: update-initramfs -k KERNEL_VERSION -u
14.2. eGroupware
- Suppression de séparateur entre le nom et prénom sous eGroupware:
- Editer le fichier phpgwapi/inc/class.common.inc.php
Chercher $delimiter = ', ' et supprimer le ,
14.3. Wordpress with mysql database
14.3.1. Disable all active plugins via sql
- Connect to the database (either via mysql/phpmyadmin)
fire the query update wp_options set option_value='a:0:{}' where option_name='active_plugins' ;
14.4. Archived debian sources lists
14.4.1. APT Source List for debian releases archives
14.4.1.1. Debian 7 (Wheezy)
deb http://archive.debian.org/debian/ wheezy main contrib non-free
deb http://archive.debian.org/debian-security wheezy/updates main contrib non-free
14.4.1.2. Debian 8 (Jessie)
deb http://archive.debian.org/debian/ jessie main contrib non-free
deb http://archive.debian.org/debian-security jessie/updates main contrib non-free
14.4.1.3. Debian 9 (Stretch)
deb http://archive.debian.org/debian/ stretch main contrib non-free
deb http://archive.debian.org/debian/ stretch-proposed-updates main contrib non-free
deb http://archive.debian.org/debian-security stretch/updates main contrib non-free
14.4.1.4. Debian 10 (Buster)
deb http://archive.debian.org/debian/ buster main non-free contrib
deb http://archive.debian.org/debian/ buster-updates main non-free contrib
deb http://archive.debian.org/debian/ buster-proposed-updates main non-free contrib
deb http://security.debian.org/ buster/updates main non-free contrib
Index CategoryMiscs CategoryLinux CategoryUnix CategoryMsWindows