Posts by morgan

Modifier les raccourcis d’applications ubuntu touch

Modifier les raccourcis  d’applications ubuntu touch

Bonjour à tous, Ayant récemment fait l’acquisition d’un ubuntu touch, j’ai décider d’ouvrir une section où je posterais des petites astuces que je trouve.   Pour inaugurer cette nouvelle catégorie, nous allons voir comment modifier les raccourcis d’applications ubuntu touch.   Pour remplacer l’icône de l’horloge par l’excellente application de mail Dekko, il vous suffit d’entrer cette ligne de commande : gsettings set com.canonical.Unity.ClickScope core-apps '["dialer-app", "messaging-app", "address-book-app", "com.ubuntu.camera_camera", "webbrowser-app", "dekko.dekkoproject"]'   Vous pouvez vous amusez à la taper à la main depuis votre smartphone (en utilisant l’application terminal) ou alors vous pouvez le faire depuis votre desktop, pour ce faire suivez les étapes suivantes : Activer le mode développeur (pour activer le mode développeur il faut avoir activer le passcode). Allez dans « System setting » -> « about this phone »  -> « developper mode »  Connecter le téléphone au pc via USB Déverrouiller l’écran (c’est une sécurité, pour que le pc puisse accéder au portable il faut déverrouillé l’écran du téléphone) Dans votre terminal (desktop), pour vous connecter au téléphone,  taper : adb shell  Ensuite entrer la ligne de commande pour ajouter l’icône Dekko : gsettings set com.canonical.Unity.ClickScope core-apps '["dialer-app", "messaging-app", "address-book-app", "com.ubuntu.camera_camera", "webbrowser-app", "dekko.dekkoproject"]' Et voici le résultat : Si jamais vous voulez ré-initialiser les raccourcis par défaut : gsettings reset com.canonical.Unity.ClickScope core-apps...

Read More

Créer des boîtes de dialogues en Bash

Créer des boîtes de dialogues en Bash

Bonjour à tous, Aujourd’hui une petite astuce assez sympa pour apprendre à créer des programmes bash un petit plus « fancy » grâce à whiptail. Vous savez ces petites boîtes de dialogues que l’on peut retrouver dans ce genre d’exemple : Nous allons voir comment créer ce genre de boîtes de dialogues. Sans plus tarder nous allons rentrer dans le vif du sujet 1. La Message Box La prmière boîte de dialogue que nous allons voir est la message Box, elle permet d’afficher un petit message à l’écran. whiptail --title "<titre>" --msgbox "<message>" <height> <width> Pour afficher quelque chose qui ressemble à cela : voici le code source bash Shell #!/bin/bash whiptail --title "Titre Message Box" --msgbox "Utilisation de whiptail pour la creation d'un messageBox. Cliquer sur Ok pour continuer." 10 60 12 #!/bin/bashwhiptail --title "Titre  Message Box" --msgbox "Utilisation de whiptail pour la creation d'un messageBox. Cliquer sur Ok pour continuer." 10 60 2. Une boite de dialogue oui / non La deuxième boite de dialogue que nous allons voir est la yes/no, elle permet d’afficher un message de confirmation avant d’executer une action. whiptail --title "<titre>" --yesno "<text>" <height> <width>   Shell #!/bin/bash if (whiptail --title "Boite de dialogue Oui / Non" --yesno "Voudrais-tu m'épouser ?" 10 60) then echo "C'est le plus beau jour de ma vie" else echo "Nooooooon !!" fi 123456 #!/bin/bashif (whiptail --title "Boite de dialogue Oui / Non" --yesno "Voudrais-tu m'épouser ?" 10 60) then echo "C'est le plus beau jour de ma vie"else echo "Nooooooon !!"fi Si jamais vous pouvez personnalisé les réponses en précisant la valeur du bouton yes et no avec les attributs : --yes-button "valeur du oui" --no-button "valeur non" 3. Input La troisème boîte de dialogue est l’input box, elle permet à l’utilisateur de saisir une information. whiptail --title "<titre>" --inputbox "<texte>" <height> <width> <default-text> Shell #!/bin/bash Name=$(whiptail --title "Input" --inputbox "Quel est ton prénom ?" 10 60 Morgan 3>&1 1>&2 2>&3) exitstatus=$? if [ $exitstatus = 0 ]; then echo "Okay, ton prénom est :" $Name else echo "Tu as annuler... :-(" fi 123456789 #!/bin/bashName=$(whiptail --title "Input" --inputbox "Quel est ton prénom ?" 10 60 Morgan 3>&1 1>&2 2>&3) exitstatus=$?if [ $exitstatus = 0 ]; then    echo "Okay, ton prénom est :" $Nameelse    echo "Tu as annuler... :-("fi  Créer une password Box Comme sont nom l’indique, c’est rès utile lorsqu’on veux que l’utilisateur renseigne un mot de passe Shell whiptail --title...

Read More

Donner les permissions aux fichiers et dossiers – linux

Donner les permissions aux fichiers et dossiers – linux

Bonjour à tous, Aujourd’hui une toute petite astuce pour donnée les « bonnes » permissions pour les fichiers et dossiers. Souvent, les gens ne donnent pas les bonnes permissions pour les fichiers/dossiers. En effet, ce n’est pas très sûr de donnée les droits d’exécutions sur les fichiers. Habituellement, pour un site web, on donne le chmod 644 pour les fichiers et 755 pour les répertoires.   Shell # Donne le chmod 644 pour tout les fichiers dans le dossier "YOUR_DIR" find YOUR_DIR/ -type f -print0 | xargs -0 chmod 644 # Donne le chmod 755 pour tous les dossiers dans le répertoire YOUR_DIR find YOUR_DIR/ -type d -print0 | xargs -0 chmod 755 12345 # Donne le chmod 644 pour tout les fichiers dans le dossier "YOUR_DIR"find YOUR_DIR/ -type f -print0 | xargs -0 chmod 644     # Donne le chmod 755 pour tous les dossiers dans le répertoire YOUR_DIR find YOUR_DIR/ -type d -print0 | xargs -0 chmod 755...

Read More

Plus de son après une mise à jour ? [Ubuntu]

Plus de son après une mise à jour ? [Ubuntu]

Bonjour à tous, Aujourd’hui sur irc, j’ai eu quelqu’un qui s’est plaint de ne plus avoir de son avec firefox sur sont ubuntu 14.04 LTS après une mise à jour. Alors, c’était dû au fait que les drivers de la carte son ne s’était pas installé correctement. Rien de bien méchant, cette petite ligne de commande résout le problème : sudo apt-get --reinstall install build-essential linux-headers-`uname...

Read More

Comment faire pour que « apt-get upgrade » utilise moins de ressources ?

Comment faire pour que « apt-get upgrade » utilise moins de ressources ?

Bonjour à tous, Aujourd’hui je vous présente une petite astuce toute simple pour faire en sorte que la mise à jour consomme moins de ressources sous linux. Dans certain cas il peut s’avérer utile que la mise à jour consomme moins de ressource (pour les petites configuration). Par contre la procédure prendra plus de temps. Sur linux, il existe deux commandes très utile qui sont : nice :  permet de changer le niveau de priorité d’un processus déterminé. La priorité la plus élevée correspond à un niveau de -20, tandis que la plus basse correspond à +19 ionice : même chose que nice mais pour la vitesse de lecture/écriture sur le disque. ionice va de 0 à 7, où 0 est la valeur de priorité la plus élevé et 7 la plus faible Pour nice et ionice le principe d’utilisation est le même : nice -n <niceness> <command> niceness étant la valeur de la priorité Pour mettre à jour la priorité d’un processus, il existe la commande renice renice -n <niceness> -p <pid>   Pour lancer la mise à jour avec une faible priorité : Pour les système GNU/Linux basé sur debian : sudo nice -n 19 apt-get upgrade on peut facilement combiner nice et ionice : sudo ionice -n 7 nice -n 19 apt-get upgrade Pour les systèmes basé sous centOS / Fedora sudo ionice -n 7 nice -n 19 yum...

Read More

Récupérer les paroles d’une musique (.mp3, .m4a) et l’enregistrer sous Linux

Récupérer les paroles d’une musique (.mp3, .m4a) et l’enregistrer sous Linux

Bonjour à tous, aujourd’hui nous allons voir un petit script bash bien sympathique qui permet de récupérer tous les fichiers musicaux (.mp3, .m4a ou d’autres – il suffit de les ajouter dans le script-) et d’y ajouter les paroles des chansons. Tout d’abord, nous devons nous assuré de disposer de wget et eyed3 Si vous êtes sur une distribution basé sur debian (ubuntu, elementary os, linux mint, etc …) sudo apt-get install wget eyed3 Si vous êtes sur une distribution basé sur centOS / fedora : yum install python-eyed3 wget   Qu’est-ce que eyed3 ? eyed3 est un petit programme python qui permet de jouer les méta-data ID3 . Elle sont surtout utilisé avec les fichiers .mp3, elle peuvent contenir le nom de l’artiste, de l’album, de la musique et aussi les paroles ! L’idée va être d’extraire de ces méta-datas le nom de l’artiste ainsi que le nom de la chanson pour récupérer les paroles et les stockés dans ces méta-data. Voici un petit script shell qui permet de faire cela automatiquement. Placer-le dans un répertoire (par exemple /home/user/musique) et il se chargera de scruter toutes les musiques des répertoires et sous répertoire pour y mettre à jour les méta-data.   Shell #!/bin/bash _TPL='http://makeitpersonal.co/lyrics?artist=<artist>&title=<title>' _SRY="Desole, il n'y a pas encore de parole pour cette chanson." [ "$1" ] && _PATH="$1" || _PATH=$PWD cd $_PATH for _FILE in {*.mp3,*.m4a}; do if [[ -r $_FILE ]]; then _SONG=$(eyeD3 --no-color "$_FILE" | grep title) _ARTIST="${_SONG#*"artist: "}" _TITLE="${_SONG%"artist: "*}" _TITLE="${_TITLE#"title: "}" echo -n "$_ARTIST - $_TITLE" _ARTIST="${_ARTIST// /+}" _TITLE="${_TITLE// /+}" _URL="${_TPL//"<artist>"/$_ARTIST}" _URL="${_URL//"<title>"/$_TITLE}" _LYRICS=$(wget -qO- $_URL) if [ "$_LYRICS" != "$_SRY" ]; then eyeD3 --lyrics=eng:Lyrics:"$_LYRICS" "$_FILE" 1>/dev/null else echo "pas de paroles trouvé... next!" fi fi done cd $OLDPWD 1234567891011121314151617181920212223242526272829303132333435 #!/bin/bash _TPL='http://makeitpersonal.co/lyrics?artist=<artist>&title=<title>'_SRY="Desole, il n'y a pas encore de parole pour cette chanson." [ "$1" ] && _PATH="$1" || _PATH=$PWD cd $_PATH for _FILE in {*.mp3,*.m4a}; do    if [[ -r $_FILE ]]; then        _SONG=$(eyeD3 --no-color "$_FILE" | grep title)         _ARTIST="${_SONG#*"artist: "}"        _TITLE="${_SONG%"artist: "*}"        _TITLE="${_TITLE#"title: "}"         echo -n "$_ARTIST - $_TITLE"         _ARTIST="${_ARTIST// /+}"        _TITLE="${_TITLE// /+}"        _URL="${_TPL//"<artist>"/$_ARTIST}"        _URL="${_URL//"<title>"/$_TITLE}"         _LYRICS=$(wget -qO- $_URL)         if [ "$_LYRICS" != "$_SRY" ]; then            eyeD3 --lyrics=eng:Lyrics:"$_LYRICS" "$_FILE" 1>/dev/null        else            echo "pas de paroles trouvé... next!"        fi    fidone cd $OLDPWD Merci à Cyprian Guerra pour le...

Read More

Wifiphisher : pirater les réseaux Wifi

Wifiphisher : pirater les réseaux Wifi

Un chercheur en sécurité grec, nommé George Chatzisofroniou, a développé un outil d’ingénierie sociale WiFi qui est conçu pour voler les informations d’identification des utilisateurs via les réseaux WiFi sécurisés. L’outil est baptisé WiFiPhisher et a été publié sur GitHub. « C’est une attaque d’ingénierie sociale qui n’utilise pas la force brute contrairement à d’autres méthodes. C’est un moyen facile d’obtenir les mots de passe WPA d’une cible« , a déclaré George Chatzisofroniou». Cependant, il existe déjà plusieurs outils de piratage sur Internet dédiés au piratage d’un réseau sécurisé WiFi, mais cet outil automatise de multiples techniques de piratage WiFi qui le font se démarquer des autres. WiFiPhisher utilise le scénario d’attaque « Evil Twin »  : l‘outil créer d’abord un faux point d’accès sans fil (AP) et se fait passer pour un AP WiFi légitime. Il déclenche ensuite une attaque par déni de service (DoS) contre le point d’accès WiFi légitime, ou crée des interférences autour de ce dernier, qui déconnecte alors les utilisateurs sans fil. Ces derniers sont ensuite invités à inspecter les réseaux disponibles… le piège se referme ! Une fois déconnecté du point d’accès WiFi légitime, l’outil va forcer les ordinateurs et périphériques hors ligne pour qu’ils se reconnectent automatiquement au jumeau maléfique, permettant au pirate d’intercepter tout le trafic via ce dispositif. La technique est également connu comme AP Phishing, Wi-Fi Phishing, Hotspotter ou Honeypot AP. Ce genre d’attaques font usage de faux points d’accès avec des pages de connexion truquées pour capturer les informations d’identification WiFi des utilisateurs, numéros de carte de crédit, ou encore lancer des attaques man-in-the-middle (ou MiTM) et infecter les hôtes du réseau sans fil. « WiFiPhisher est un outil de sécurité capable de monter des attaques phishing rapides et automatisées contre les réseaux WiFi WPA pour obtenir les identifiants sans brute force« , a déclaré Chatzisofroniou. « WifiPhisher renifle la zone et copies les paramètres du point d’accès cible et créer un point d’accès sans fil voyou qui est modelé sur la cible. » Source : undernews   Je n’ai pas voulu m’embêter à réécrire la partie théorie déjà très bien expliqué par undernews, alors je vous ai lamentablement copié/collé l’article d’undernews.   L’outils est disponible par défaut sur la distribution KALI mais vous pouvez l’installé très facilement sur ubuntu en clonant le dépôt gitHub Shell sudo apt-get install python-scapy tcpdump isc-dhcp-server hostapd git clone https://github.com/sophron/wifiphisher.git 12 sudo apt-get install python-scapy tcpdump isc-dhcp-server hostapdgit clone...

Read More

Différence entre ‘+’ et ‘\;’ à la fin de la commande -exec

Différence entre ‘+’ et ‘\;’ à la fin de la commande -exec

Bonjour à tous, j’écris juste un petit billet car je me suis demandé quelle était la différence entre l’utilisation du + et \; à la fin de -exec lors de l’utilisation de la commande find ? -exec ... \;  lance une commande après l’autre. Si vous avez trois fichiers, la ligne de commande va être exécuter trois fois. -exec ... {} +  est utilisé pour les commandes qui peuvent prendre en argument plus d’un fichier à la fois (exemple : cat, stat, ls). Le fichier trouvé par find sont chaîné ensemble comme avec la commande xargs . Voici un petit comparatif entre les deux commandes sur 10 000 fichiers : Shell morgan@morgan-Studio-1749$ cd /tmp morgan@morgan-Studio-1749:/tmp$ mkdir testdir morgan@morgan-Studio-1749:/tmp$ touch testdir/{0000..9999} morgan@morgan-Studio-1749:/tmp$ time find testdir/ -type f -exec cat {} \; real 0m10.779s user 0m0.691s sys 0m9.908s morgan@morgan-Studio-1749:/tmp$ time find testdir/ -type f -exec cat {} + real 0m0.055s user 0m0.018s sys 0m0.037s morgan@morgan-Studio-1749:/tmp$ 12345678910111213141516 morgan@morgan-Studio-1749$ cd /tmpmorgan@morgan-Studio-1749:/tmp$ mkdir testdirmorgan@morgan-Studio-1749:/tmp$ touch testdir/{0000..9999} morgan@morgan-Studio-1749:/tmp$ time find testdir/ -type f -exec cat {} \; real 0m10.779suser 0m0.691ssys 0m9.908s morgan@morgan-Studio-1749:/tmp$ time find testdir/ -type f -exec cat {} + real 0m0.055suser 0m0.018ssys 0m0.037smorgan@morgan-Studio-1749:/tmp$ On peux voir que l’utilisation du + (opérateur de concaténation) améliore grandement la vitesse d’exécution (attention, cela ne fonctionne que sur les commandes qui accepte plusieurs fichiers en paramètres). Qu’est-ce qu’il se passe vraiment ? Avec \; , la commande exécuté seras : cat 1; cat 2; cat 3 . Avec + , la commande exécuté seras : cat 1 2 3...

Read More

Création d’une application ubuntu – jour 4

Navigation sous ubuntu touch Dans le projet que nous venons d’ouvrir il y a des exemples d’utilisation de presque tous les composants ubuntu, mais pas pour la navigation. Nous allons donc voir comment faire un système de navigation. Il existe deux façon de naviguer sur ubuntu touch : PageStack et Tabs. Nous allons étudiez chacun des deux composants. Utiliser la navigation avec le composant PageStack Pour utiliser pageStack il faut aller sur la documentation officiel pour prendre connaissance des règles de design (comme indiqué sur l’image ci-dessous) : Maintenant passons à l’exemple pratique (issue de la documentation) : JavaScript import QtQuick 2.0 import Ubuntu.Components 1.1 import Ubuntu.Components.ListItems 1.0 as ListItem MainView { width: units.gu(48) height: units.gu(60) PageStack { id: pageStack Component.onCompleted: push(page0) Page { id: page0 title: i18n.tr("Root page") visible: false Column { anchors.fill: parent ListItem.Standard { text: i18n.tr("Page one") onClicked: pageStack.push(page1, {color: UbuntuColors.orange}) progression: true } ListItem.Standard { text: i18n.tr("External page") onClicked: pageStack.push(Qt.resolvedUrl("MyCustomPage.qml")) progression: true } } } Page { title: "Rectangle" id: page1 visible: false property alias color: rectangle.color Rectangle { id: rectangle anchors { fill: parent margins: units.gu(5) } } } } } 123456789101112131415161718192021222324252627282930313233343536373839404142 import QtQuick 2.0import Ubuntu.Components 1.1import Ubuntu.Components.ListItems 1.0 as ListItemMainView {    width: units.gu(48)    height: units.gu(60)    PageStack {        id: pageStack        Component.onCompleted: push(page0)        Page {            id: page0            title: i18n.tr("Root page")            visible: false            Column {                anchors.fill: parent                ListItem.Standard {                    text: i18n.tr("Page one")                    onClicked: pageStack.push(page1, {color: UbuntuColors.orange})                    progression: true                }                ListItem.Standard {                    text: i18n.tr("External page")                    onClicked: pageStack.push(Qt.resolvedUrl("MyCustomPage.qml"))                    progression: true                }            }        }        Page {            title: "Rectangle"            id: page1            visible: false            property alias color: rectangle.color            Rectangle {                id: rectangle                anchors {                    fill: parent                    margins: units.gu(5)                }            }        }    }} Qu’est-ce qu’il se passe ? Toutes les pages doivent être à l’intérieur d’un PageStack (et il ne peux y avoir qu’un seul PageStack sinon le système ne sais plus où il en est). Au chargement du composant on « push » la page0 (ça sera la page afficher par défaut). Utiliser la navigation avec le composant Tabs Comme pour le composant PageStack, je vous invite à prendre connaissance des règles de design sur la documentation officiel pour avoir plus de détails Voici un exemple d’utilisation tiré de la documentation officiel JavaScript import QtQuick 2.0 import Ubuntu.Components 1.1 import Ubuntu.Components.ListItems 1.0 as ListItem MainView { width: units.gu(48) height: units.gu(60) Tabs { id: tabs Tab { title: i18n.tr("Simple page") page: Page { Label { id: label anchors.centerIn: parent text: "A centered label" } tools: ToolbarItems { ToolbarButton { text: "action" onTriggered: print("action triggered") } } } } Tab { id: externalTab title: i18n.tr("External") page: Loader { parent: externalTab anchors { left: parent.left right: parent.right bottom: parent.bottom } source: (tabs.selectedTab ===...

Read More

Création d’une application pour ubuntu touch – jour 3

Création d’une application pour ubuntu touch – jour 3

Utilisation du toolkit de démonstration d’ubuntu touch Bonjour à tous. Après avoir passez les deux étapes préliminaires, nous allons tout doucement passez au cœurs du développement de l’application. Mais avant de commencer le développement à proprement parlé, je vous invite à vous familiarisé avec les conventions de design sous ubuntu touch en découvrant le kit de d’utilisation (toolkit) d’ubuntu ui (user interface) . Ubuntu ui – toolkit Lorsque vous avez installé le sdk ubuntu, vous avez aussi installé de petit exemples d’utilisations des composants ubuntu. Dans ce bref tutoriel, nous allons nous intéresser aux différents composants existant pour ubuntu touch.   Ouverture du toolkit Le projet est situé dans le répertoire « /usr/lib/ubuntu-ui-toolkit/examples/ » Dans Qt, faire CTRL + o pour ouvrir un nouveau projet, puis collez /usr/lib/ubuntu-ui-toolkit/examples/ dans la barre de location, comme dans l’exemple ci-dessous :   Ensuite, presser la touche entrer, vous devriez atterrir dans le répertoire choisi : Vous avez comme projet de démonstration une calculatrice et une application de conversion d’unité. Je vous laisserais avoir la curiosité d’aller regardé ces applications. Ici, l’application qui nous intéresseras seras la galerie de toolkit (ubuntu-ui-toolkit-gallery). Double clickez sur le répertoire « ubuntu-ui-toolkit-gallery » et choisissez le fichier « ubuntu-ui-toolkit-gallery.qmlproject » : Ensuite vous pouvez lancer l’application de démonstration des composants ubuntu en cliquant sur CTRL + R : Nous allons voir comment utilisez la navigation dans le prochain...

Read More