Quelques petites idées trouvées par-ci, par-là ...
Le site https://opensource.builders/ regroupe une liste, non exhaustive, d'applications open-source pouvant remplacer une bonne partie des applications propriétaires que nous utilisons tous les jours.
Un moteur de recherche est disponible pour nous aider à trouver notre bonheur.
Dans le format CSV, les guillemets et les nombres longs peuvent générer des problèmes d'affichage dans Excel.
Exemple avec le CSV suivant:
Dans Excel, l'affichage ressemble à ceci:
Résultat, la ligne 2 a partiellement disparu, et le nombre sur 13 caractères est affiché au format scientifique.
En réalité, la fin de la ligne 1 et le début de la ligne 2 sont concaténés dans la cellule B.
Pour éviter ces petits désagréments, il est nécessaire:
Pour les chaines contenant des guillemets, de les échapper en les doublant et d'encapsuler toute la chaine avec des guillemets.
Exemple:
"une chaine avec des doubles guillemets ""
devient
"""une chaine avec des doubles guillemets """""
(en bleu, le doublement des guillemets pour l'échappement, en rouge l'encapsulation de toute la chaine)
Pour les nombres longs, il est nécessaire d'encapsuler toute la valeur avec des guillemets et de faire précéder le tout avec le signe "="
Exemple:
1256784962457
devient
="1256784962457"
Après correction, le fichier CSV ressemble à ceci:
Dans Excel:
Le résultat est parfaitement identique aux valeurs d'origine.
Le site https://codemoji.org/#/encrypt de la fondation Mozilla, permet de chiffrer des messages à l'aide d'emojis.
Vous écrivez votre message, vous choisissez l'emoji qui vous plait pour le chiffrement et le message chiffré est disponible en ligne et une url courte est fournie afin de partager le message chiffré à qui vous voulez.
Des liens de partages automatiques vers les différents réseaux sociaux sont également disponibles.
Petite démonstration en image.
Super sympa.
Seule contrainte, ne pas oublier l'emoji qui a servi au cryptage afin de pouvoir déchiffrer le message.
Depuis la dernière mise à jour de DBeaver en version 21.1.0, je ne peux plus me connecter à ma base de données SqlServer.
La faute à qui, au protocole de sécurité TLS1.0 qui est désormais désactivé dans la nouvelle version 11 de Java.
DBeaver utilisant sa propre version de Java, la dernière mise à jour embarque la version 11 de Java.
Afin de corriger cette "anomalie", il est nécessaire de modifier le fichier java.security dans le dossier jre de DBeaver.
Pour mon installation, il s'agit de C:\Program Files\DBeaver\jre\conf\security
La ligne contenant:
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \ DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \ include jdk.disabled.namedCurves
doit être modifiée comme ceci:
jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, \ DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \ include jdk.disabled.namedCurves
Il suffit juste de supprimer les références aux protocoles TLSv1 et TLSv1.1
La connexion à la base de données SqlServer est à nouveau possible.
Cette astuce fonctionne dans les consoles bash et python.
En bash
$ echo -e "\033[H\033[J"
En python
>>> print("\033[H\033[J")
Cette commande peut-être utilisée dans des scripts afin d'afficher du contenu à l'écran et le rafraichir à intervalles régulières sans surcharger l'écran.
Le site https://httpbin.org/ propose tout un tas de méthodes HTTP pouvant servir à tester différents outils de requêtage HTTP.
Vraiment très pratique pour tester des outils comme curl, requests (python) etc ....
Afficher la suite de Fibonacci en bash, php, python3
En bash:
#!/bin/bash
#set -x
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
function is_int {
if grep -E -v -q "^-?[0-9]+$" <<< $1; then
return 1
fi
return 0
}
if [ -z $1 ] || ! is_int $1 || (($1 <= 0)); then
printf "\
Usage: %s nbr_int
nbr_int: Un nombre entier supérieur à 0\n" $0
exit 1
fi
a=0
b=1
while (($b < $1)); do
printf "%d\n" $b
((b=a+b))
((a=b-a))
done
printf "b/a = %1.15f\n" $(echo $b/$a | bc -l)
exit 0
En php:
#!/usr/bin/env php
<?php
if(! isset($argv[1]) || ! is_numeric($argv[1]) || intval($argv[1]) <= 0){
printf("Usage: %s nbr_int
nbr_int: Un nombre entier supérieur à 0\n", $argv[0]);
exit(1);
}
$nbr_int = intval($argv[1]);
$a = 0;
$b = 1;
while ($b < $nbr_int) {
printf("%d\n", $b);
$b = $a + $b;
$a = $b - $a;
}
printf("b/a = %1.15f\n", $b/$a);
exit(0);
En python3:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys, argparse
parser = argparse.ArgumentParser(description=u"Calcul et affiche les n premiers nombres de la suite de Fibonacci.")
parser.add_argument("number", help=u"Nombre maximum de calcul de la séquence. Ce nombre doit égal ou supérieur à 2.", type=int)
parser.add_argument("-g", "--display-golden-number", dest="golden", help=u"Afficher le nombre d'or.", action="store_true")
parser.add_argument("--log", default=sys.stdout, type=argparse.FileType('w'), help=u"Fichier où sera enregistré le résultat.")
args = parser.parse_args()
if args.number < 2:
print(u"Indiquer un nombre supérieur ou égal à 2.")
sys.exit(1)
a,b = 0,1
while b < args.number:
print("{:d}".format(b), file=args.log)
a,b = b,a+b
if args.golden:
print(u"\nb/a = {:1.15f} (Nombre d'or)".format(b/a), file=args.log)
args.log.close()
sys.exit(0)
Tous ces scripts prennent en paramètre un nombre entier positif.
En prime, le quotient des deux derniers termes est affiché et représente le nombre d'or si le nombre passé en argument est supérieur ou égal à 1 000 000 (pour la précision du nombre d'or).
Le script Python est un peu plus développé avec une gestion des arguments plus pointue.
Transmettre des messages chiffrés.
Framabin est un service en ligne de Framasoft, libre et gratuit, qui permet de transmettre des messages, de façon sécurisée (les messages sont chiffrés en utilisant l’algorithme AES 256 bits).
Il est possible de définir une date d'expiration, et une option est diponible afin de supprimer le message dès la première lecture.
Une fois le message créé, 2 urls sont fournies pour le partage et la suppression du message.
Partagez des images de façon anonyme.
Framapic est un service en ligne de Framasoft, libre et gratuit, qui permet de partager des images, de façon sécurisée (les images sont cryptées sur le serveur).
Il est possible d'y envoyer une image à partir de son poste ou d'une url.
Il est possible de définir une date d'expiration, et une option est diponible afin de supprimer l'image dès le premier accès.
Enfin, un bouton permet de partager le lien de l'image directement sur Twitter et 4 urls sont fournies pour l'affichage, le téléchargement, le partage et la suppression de l'image.
Quand on souhaite exclure des fichiers lors de l'utilisation de "git add", il est possible d'utiliser un fichier ".gitignore" dans lequel on indique tous les fichiers/dossiers que l'on souhaite exclure.
Très pratique quand la liste des fichiers/dossiers à exclure n'est pas très importante.
Mais comment faire quand c'est l'inverse, un dossier contenant de nombreux fichiers, et seulement quelques fichiers à ajouter à un dépôt git.
L'idéal serait de pouvoir utiliser un fichier ".gitaccept"
Voici une petite astuce qui permet de le faire.
$ xargs -a .gitaccept -d '\n' git add
Le principe consiste à utiliser la commande xargs.
La paramètre -a indique le fichier à lire sur l'entrée standard, ce fichier contient la liste des fichiers à ajouter au dépôt git, et le paramètre -d indique le caractère à utiliser comme délimiteur.
Pour chaque fichier lu dans le fichier ".gitaccept", la commande xargs exécute la commande "git add".
LessPass est un outil, en ligne, qui permet de gérer ses différents mots de passe en les calculant, à la demande, à l'aide d'informations fournies, à l'inverse des différents gestionnaires de mots de passe qui eux les enregistrent dans une base.
Le gros avantage de cette solution, tous vos mots de passe sont disponibles n'importe quand, n'importe où, sur n'importe quelle machine et n'importe quel navigateur.
Deux informations importantes ne doivent pas être oubliées.
L'adresse du site web LessPass ainsi que votre mot de passe maître.
Ah oui, il faut quand même se souvenir d'un mot de passe.
Une extension pour Chrome et Firefox est également disponible. Cela évite d'aller sur le site web.
Comment cela fonctionne-t-il ?
Pour fonctionner, l'algorithme a besoin de trois informations:
A l'aide de ces informations, l'algorithme calcul un mot de passe, de la longueur souhaitée et contenant ou pas des caractères spécifiques.
C'est ce mot de passe qui doit être utilisé pour vous connecter sur le site indiqué.
A utiliser, bien sûr, lors de la création d'un compte, ou alors si le compte est déjà existant, le mot de passe correspondant doit être changé par celui-ci.
LessPass est Open Source. Ce qui signifie que le code est accessible.
Les sources sont disponibles sur GitHub https://github.com/lesspass/lesspass/
LessPass peut également être auto-hébergé. (container docker)
L'algorithme est consultable ici https://github.com/lesspass/core/blob/master/index.js
Grâce à cet outil, fini les mots de passe identiques pour tous les sites sur lesquels vous avez un compte.
Toutes les infos ont été trouvées sur ce site: https://buzut.net/certbot-challenge-dns-ovh-wildcard/
# apt-get install python3-pip
# python3 -m pip install --upgrade certbot certbot-dns-ovh
Création du fichier "/etc/logrotate.d/certbot" avec le contenu suivant
/var/log/letsencrypt/*.log {
monthly
rotate 6
compress
delaycompress
notifempty
missingok
create 640 root adm
}
Pour que le script puisse vérifier que le domaine vous appartient, il doit avoir l'autorisation de modifier des enregistrements TXT dans les DNS.
Il faut donc créer les clés API avec une date de validité illimitée et pour plus de sécurité, avec une restriction au niveau de l'adresse IP du serveur où sera exécuté le script.
Les droits doivent être renseignés de cette manière:
GET /domain/zone/*
PUT /domain/zone/*
POST /domain/zone/*
DELETE /domain/zone/*
Une fois les clés créées, il est nécessaire de créer un fichier INI pour y stocker les différentes clés générées.
Créer le fichier ~/.secrets/certbot/ovh.ini avec le contenu suivant:
dns_ovh_endpoint = ovh-eu
dns_ovh_application_key = xxx
dns_ovh_application_secret = xxx
dns_ovh_consumer_key = xxx
Ne pas oublier de fixer les droits sur le fichier :
# chmod 600 ~/.secrets/certbot/ovh.ini
Par exemple, pour mon domaine
# certbot certonly --dns-ovh --dns-ovh-credentials ~/.secrets/certbot/ovh.ini -d quennec.fr -d *.quennec.fr
A renseigner dans crontab pour un contrôle tous les lundi à 9:00 et une mise à jour si nécessaire.
00 9 * * 1 /usr/local/bin/certbot certonly --dns-ovh --dns-ovh-credentials /root/.secrets/certbot/ovh.ini --non-interactive --agree-tos --email mon@email.fr -d quennec.fr -d *.quennec.fr && systemctl reload nginx
Modifier le fichier vhost correspondant au domaine pour y intégrer les directives liées au certificat letsencrypt.
server {
listen 443 ssl;
server_name quennec.fr www.quennec.fr;
...
ssl_certificate /etc/letsencrypt/live/quennec.fr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/quennec.fr/privkey.pem;
...
}
Marre de cliquer à tout bout de champ sur les bandeaux cookies.
Cette extension, Ninja Cookie, pour Firefox et Chrome se charge à votre place de les refuser automatiquement.
Pour Firefox: https://addons.mozilla.org/fr/firefox/addon/ninja-cookie/
Pour Chrome: https://chrome.google.com/webstore/detail/ninja-cookie/jifeafcpcjjgnlcnk...
Site officiel du projet: https://ninja-cookie.com/fr/
Table ASCII ( 0 - 127 )
Décimal Octal Hex Binaire Caractère ------- ----- --- -------- ------ 000 000 00 00000000 NUL (Null char.) 001 001 01 00000001 SOH (Start of Header) 002 002 02 00000010 STX (Start of Text) 003 003 03 00000011 ETX (End of Text) 004 004 04 00000100 EOT (End of Transmission) 005 005 05 00000101 ENQ (Enquiry) 006 006 06 00000110 ACK (Acknowledgment) 007 007 07 00000111 BEL (Bell) 008 010 08 00001000 BS (Backspace) 009 011 09 00001001 HT (Horizontal Tab) 010 012 0A 00001010 LF (Line Feed) 011 013 0B 00001011 VT (Vertical Tab) 012 014 0C 00001100 FF (Form Feed) 013 015 0D 00001101 CR (Carriage Return) 014 016 0E 00001110 SO (Shift Out) 015 017 0F 00001111 SI (Shift In) 016 020 10 00010000 DLE (Data Link Escape) 017 021 11 00010001 DC1 (XON)(Device Control 1) 018 022 12 00010010 DC2 (Device Control 2) 019 023 13 00010011 DC3 (XOFF)(Device Control 3) 020 024 14 00010100 DC4 (Device Control 4) 021 025 15 00010101 NAK (Negative Acknowledgement) 022 026 16 00010110 SYN (Synchronous Idle) 023 027 17 00010111 ETB (End of Trans. Block) 024 030 18 00011000 CAN (Cancel) 025 031 19 00011001 EM (End of Medium) 026 032 1A 00011010 SUB (Substitute) 027 033 1B 00011011 ESC (Escape) 028 034 1C 00011100 FS (File Separator) 029 035 1D 00011101 GS (Group Separator) 030 036 1E 00011110 RS (Request to Send)(Record Separator) 031 037 1F 00011111 US (Unit Separator) 032 040 20 00100000 SP (Space) 033 041 21 00100001 ! (exclamation mark) 034 042 22 00100010 " (double quote) 035 043 23 00100011 # (number sign) 036 044 24 00100100 $ (dollar sign) 037 045 25 00100101 % (percent) 038 046 26 00100110 & (ampersand) 039 047 27 00100111 ' (single quote) 040 050 28 00101000 ( (left opening parenthesis) 041 051 29 00101001 ) (right closing parenthesis) 042 052 2A 00101010 * (asterisk) 043 053 2B 00101011 + (plus) 044 054 2C 00101100 , (comma) 045 055 2D 00101101 - (minus or dash) 046 056 2E 00101110 . (dot) 047 057 2F 00101111 / (forward slash) 048 060 30 00110000 0 049 061 31 00110001 1 050 062 32 00110010 2 051 063 33 00110011 3 052 064 34 00110100 4 053 065 35 00110101 5 054 066 36 00110110 6 055 067 37 00110111 7 056 070 38 00111000 8 057 071 39 00111001 9 058 072 3A 00111010 : (colon) 059 073 3B 00111011 ; (semi-colon) 060 074 3C 00111100 < (less than sign) 061 075 3D 00111101 = (equal sign) 062 076 3E 00111110 > (greater than sign) 063 077 3F 00111111 ? (question mark) 064 100 40 01000000 @ (AT symbol) 065 101 41 01000001 A 066 102 42 01000010 B 067 103 43 01000011 C 068 104 44 01000100 D 069 105 45 01000101 E 070 106 46 01000110 F 071 107 47 01000111 G 072 110 48 01001000 H 073 111 49 01001001 I 074 112 4A 01001010 J 075 113 4B 01001011 K 076 114 4C 01001100 L 077 115 4D 01001101 M 078 116 4E 01001110 N 079 117 4F 01001111 O 080 120 50 01010000 P 081 121 51 01010001 Q 082 122 52 01010010 R 083 123 53 01010011 S 084 124 54 01010100 T 085 125 55 01010101 U 086 126 56 01010110 V 087 127 57 01010111 W 088 130 58 01011000 X 089 131 59 01011001 Y 090 132 5A 01011010 Z 091 133 5B 01011011 [ (left opening bracket) 092 134 5C 01011100 \ (back slash) 093 135 5D 01011101 ] (right closing bracket) 094 136 5E 01011110 ^ (caret cirumflex) 095 137 5F 01011111 _ (underscore) 096 140 60 01100000 ` 097 141 61 01100001 a 098 142 62 01100010 b 099 143 63 01100011 c 100 144 64 01100100 d 101 145 65 01100101 e 102 146 66 01100110 f 103 147 67 01100111 g 104 150 68 01101000 h 105 151 69 01101001 i 106 152 6A 01101010 j 107 153 6B 01101011 k 108 154 6C 01101100 l 109 155 6D 01101101 m 110 156 6E 01101110 n 111 157 6F 01101111 o 112 160 70 01110000 p 113 161 71 01110001 q 114 162 72 01110010 r 115 163 73 01110011 s 116 164 74 01110100 t 117 165 75 01110101 u 118 166 76 01110110 v 119 167 77 01110111 w 120 170 78 01111000 x 121 171 79 01111001 y 122 172 7A 01111010 z 123 173 7B 01111011 { (left opening brace) 124 174 7C 01111100 | (vertical bar) 125 175 7D 01111101 } (right closing brace) 126 176 7E 01111110 ~ (tilde) 127 177 7F 01111111 DEL (delete)
TestDisk & PhotoRec sont deux utilitaires qui permettent de récupérer des données effaçées sur des supports tels que des cartes mémoires et des clés usb.
Disponibles pour Linux, Mac et Windows.
Pour le téléchargement et la documentation complète: http://www.cgsecurity.org/wiki/Main_Page
Pour une meilleur sécurité, il est préférable d'utiliser ces utilitaires sur une copie du support à analyser.
Pour ce faire, l'utilitaire dd disponible sous Linux fera très bien l'affaire.
Pour connaitre le fichier /dev/xxx correspondant au support à analyser, la commande dmesg sous Linux permet de fournir l'information après avoir, bien sûr, inséré le support dans l'ordinateur.
Ou alors, à l'aide du fichier /proc/partitions:
# cat /proc/partitions
major minor #blocks name
8 0 976762584 sda
8 1 194560 sda1
8 2 1000448 sda2
8 3 1 sda3
8 5 975564800 sda5
253 0 975560704 dm-0
Pour effectuer une image du support:
# dd if=/dev/sdx of=/tmp/image.dd
Attention, avec la commande dd, de ne pas inverser les fichiers des paramètres if et of. Les conséquences sont terribles et irréversibles.
Pour installer TestDisk et PhotoRec sous Linux:
# sudo apt-get update
# sudo apt-get install testdisk
Pour les autres systèmes, il est possible de le télécharger ici: http://www.cgsecurity.org/wiki/TestDisk_Download
Pour analyser l'image du support et rechercher les fichiers effaçés avec l'utilitaire testdisk:
# testdisk /tmp/image.dd
TestDisk permet de restaurer des fichiers à partir d'une liste créée suite à une analyse.
Pour analyser l'image du support et rechercher les fichiers effaçés avec l'utilitaire photorec:
# photorec /tmp/image.dd
PhotoRec permet la restauration de tous les fichiers trouvés. Le nombre de fichiers restaurés est plus important qu'avec l'utilitaire TestDisk.
Plus d'info pour TestDisk: http://www.cgsecurity.org/wiki/TestDisk
Plus d'info pour PhotoRec: http://www.cgsecurity.org/wiki/PhotoRec
Sur tous les moteurs de recherche (Google, Bing, QWant ...), il existe une fonction bien particulière qui permet d'effectuer des recherches sur un site en particulier (le site doit être indexé par le ou les moteurs de recherche bien sûr).
Pour cela, il suffit d'indiquer dans la zone de recherche, en plus du ou des termes recherchés, la mention "site:monsite.fr"
Exemple avec Google:
Pour lister toutes les pages d'un site indexées par le moteur de recherche, il suffit d'indiquer seulement la mention "site:monsite.fr"
Exemple avec QWant:
Il existe d'autres fonctions mais celles-ci sont vraiment les plus intéressantes.
Le site meet.jit.si propose de la visioconférence libre et opensource.
Le service est utilisable en ligne via un navigateur, aucune installation sur les postes clients n'est nécessaire.
Il est également possible de créer son propre serveur mee.jit.si en téléchargeant les sources à cette adresse https://jitsi.org/jitsi-meet/
Sur le site meet.jit.si il est possible, via l'icone (en haut à droite) de configurer différents paramètres tels que son profil (pseudo et adresse mail), connecter son agenda Google et/ou Microsoft et la langue d'utilisation.
Comment créer une nouvelle visioconférence, tout simplement en saisissant un nom personnalisé dans la zone de texte "Démarrer une nouvelle réunion" ...
... et cliquer sur créer.
C'est tout bête.
Cette action génère une adresse HTTP du style https://meet.jit.si/MaNouvelleRéunion
Vous l'aurez compris, le nom de votre réunion est tout simplement ajouté à l'url principale https://meet.jit.si/
Partant de ce principe, il est extrêmement facile de générer des visioconférences en automatique.
Il faut tout de même penser à créer un nom de réunion pas trop facile à deviner pour éviter que n'importe qui s'invite à la réunion.
Pour cela, autant générer un nom de réunion avec des outils tels que:
En Bash
$ uuidgen
8eabdf78-6841-4f6f-9e35-bddd06b0c774
En Python
>>> import uuid
>>> print(uuid.uuid4())
d201619e-2245-4fba-bed2-57b5c2326f04
Une fois la réunion créée, il est possible de modifier les options de la réunion via les icones en bas à droite
Via l'icone , il est possible de modifier les options de sécurité de la réunion.
Il est possible d'activer le mode "lobby" qui permet d'autoriser les personnes à accéder à la réunion qu'après y avoir été autorisé.
Il est possible également de créer un mot de passe pour l'accès à la réunion.
L'icone , permet d'inviter des participants
tout simplement en copiant le lien HTTP de la réunion, en envoyant des mails ou en contactant un numéro de téléphone avec un code pin.
Il est même possible d'embarquer la réunion dans une iframe.
Enfin, l'icone permet d'accéder à différentes options
Comme options intéressantes il y a notamment la possibilité d'enregistrer la réunion, de couper les micros de tous les participants...
La barre d'icones en bas au milieu , permet de couper son micro, de couper sa vidéo et de quitter la réunion.
Pour terminer, la barre d'icones en bas à gauche permet de discuter avec tous les participants via un chat, de partager son écran et de lever la main si on souhaite intervenir.
L'outil est vraiment très complet et surtout très facile à utiliser.
A consommer sans modération.