Kankun smart plug

Hello,

A la demande « pressente » de @iooner :p je vais vous parler d’un produit que je viens de recevoir à la maison pour piloter une prise de courant.

Ce petit joujou est en fait un relai piloté par une carte supportant linux (OpenWrt) en wifi. C’est un produit qu’on trouve sur Amazon (désolé @iooner en effet c’est qu’en amérique du nord qu’on trouve ça pour le moment) ou sur alibaba (@iooner t’as peut être une chance :p) et il est vraiment donnée pour 30$.

Kankun_KK-SP3_Board_Large New-2014-CN-Ver-Original-Kankun-Smart-Plug-Wifi-Remote-Control-Socket-Intelligent-Charger-Wireless-Control

 

Bon je vous passe le fait qu’il y a des applications iphone et android qui vous permette de piloter et de programmer cela facilement.

Si je vous en parle c’est parce que la base est de l’openwrt et que pour le coup ça devient facile de faire ce que l’on veut avec. :)

Pour commencer il faudra initialiser votre prise avec un téléphone (android ou ios)
C’est très bien expliqué dans la notice et ça marche bien pour le connecter à votre réseau wifi. Une fois que c’est fait vous pouvez y accéder depuis le réseau facilement avec leur application.

Mais ce qui est top et le plus magique c’est qu’on peut accéder à sa prise en ssh :D

Pour cela rien de plus simple. Faut juste trouver l’ip sur votre réseau mais ça je vous laisse trouver l’outil pour ça

 ssh root@XXX.XXX.XXX.XXX

après faut le mot de passe pour moi c’est celui là qui a marché

p9z34c

Pour d’autres c’est admin et d’autres encore il faut faire un telnet XXX.XXX.XXX.XXX et un passwd pour initier le password.

Capture d’écran 2014-12-05 à 23.36.00

et voilà maintenant vous avez un petit linux facilement accessible :)

Mais comme je veux pousser un peu plus loin le truc et me faire un lien avec un serveur centralisant le pilotage de plusieurs prises il faut que je trouve un moyen facile de piloter tout ça. C’est là qu’intervient la bonne communauté du plug X)

On va implémenter un petit script cgi pour piloter depuis une requête http la prise.

Pour cela toujours connecté en ssh, il faut se créer un petit répertoire /www/cgi-bin
et construire le script cgi, json.cgi comme suit (un petit coup de vi)

#!/bin/sh
echo « Content-Type: application/javascript »
echo « Cache-Control: no-cache, must-revalidate »
echo « Expires: Sat, 26 Jul 1997 05:00:00 GMT »
echo

VERSION=0.0.1
RELAY_CTRL=/sys/class/leds/tp-link:blue:relay/brightness
TIMINGS=`tail -n+3 /etc/online.txt | sed ‘:a;N;$!ba;s/\n/ », »/g’`
IP_ADDRESS=`ifconfig wlan0 | sed ‘:a;N;$!ba;s/\n/ », »/g’ | grep -E -o ‘[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+’ | head -n 1`

get=$(echo « $QUERY_STRING » | sed -n ‘s/^.*get=\([^&]*\).*$/\1/p’ | sed « s/%20/ /g »)
set=$(echo « $QUERY_STRING » | sed -n ‘s/^.*set=\([^&]*\).*$/\1/p’ | sed « s/%20/ /g »)
callback=$(echo « $QUERY_STRING » | sed -n ‘s/^.*callback=\([^&]*\).*$/\1/p’ | sed « s/%20/ /g »)

case « $get » in
state)
case « `cat $RELAY_CTRL` » in
0) echo « $callback({\ »state\ »:\ »off\ »}) »
;;
1) echo « $callback({\ »state\ »:\ »on\ »}) »
;;
esac
;;
timing)
echo « $callback({\ »timings\ »:[\ »$TIMINGS\ »]}) »
;;
esac

case « $set » in
on)
echo 1 > $RELAY_CTRL
echo « $callback({\ »ok\ »:true}) »
;;
off)
echo 0 > $RELAY_CTRL
echo « $callback({\ »ok\ »:true}) »
;;
esac

if [ -z « $get » ] && [ -z « $set » ]; then
echo « $callback({\ »info\ »:{\ »name\ »:\ »kankun-json\ »,\ »version\ »:\ »$VERSION\ »,\ »ipAddress\ »:\ »$IP_ADDRESS\ »},\ »links\ »:{\ »meta\ »:{\ »state\ »:\ »http://$IP_ADDRESS/cgi-bin/json.cgi?get=state\ »,\ »timing\ »:\ »http://$IP_ADDRESS/cgi-bin/json.cgi?get=timing\ »},\ »actions\ »:{\ »on\ »:\ »http://$IP_ADDRESS/cgi-bin/json.cgi?set=on\ »,\ »off\ »:\ »http://$IP_ADDRESS/cgi-bin/json.cgi?set=off\ »}}}) »
fi

 

Vous retrouverez le code ici

https://github.com/homedash/kankun-json

ensuite il n’y a plus qu’à s’amuser avec les requêtes qui vont bien
pour avoir des infos: http://$IP_ADDRESS/cgi-bin/json.cgi
Jour:

http://$IP_ADDRESS/cgi-bin/json.cgi?set=on

Nuit:

http://$IP_ADDRESS/cgi-bin/json.cgi?set=off


et voilà bon évidemment ce n’est pas protégé par mot de passe mais bon normalement il n’y a personne d’autre qui va lancer ce genre de requête dans mon réseau interne…même si il ne faut pas oublier que c’est qd même un boitier chinois à 30$ et que ça se trouve c’est une porte d’entrée pour la nsa chinoise #parano… mais bon faut tester. Un petite page html dans le répertoire /www/ pour que http://$IP_ADDRESS soit clean. Voir même y créer 2 gros boutons ON/OFF utilisant les liens précédents.

voilà il y a aussi plein d’info sur la petite communauté

https://plus.google.com/communities/115308608951565782559

Bon c’est vrai que c’est pas mal et en plus c’est tout petit mais ça ne vaut pas ma multiprise « Nicolas » en cpl :)

Allez je vous laisse vous amuser avec ce super plug an.. à bientôt X)

So enjoy!

Qu’est ce qu’il y a dans mon application android?

Hello,

Avec ces smartphones, on a accès à plein d’applications! Tellement qu’on ne sait pas vraiment ce qu’elles font sur le réseau ou bien avec nos données privées. Et moi ça m’inquiète…

Donc j’étais curieux de voir comment étudier le code d’une application android. Et en fait c’est très très simple. Il suffit de télécharger l’application dex2jar.

https://code.google.com/p/dex2jar/
(Il faut avoir Java d’installé sur sa machine)

Ensuite il suffit d’exécuter les commandes suivantes avec un fichier apk que vous pouvez récupérer de puis votre téléphone (avec un backup par exemple)

# convert classes.dex in test_apk-debug.apk to test_apk-debug_dex2jar.jar
d2j-dex2jar.sh -f -o test_apk-debug_dex2jar.jar test_apk-debug.apk

# verify jar
d2j-asm-verify.sh test_apk-debug_dex2jar.jar

# convert to jasmin format
d2j-jar2jasmin.sh -f -o test_apk_jasmin test_apk-debug_dex2jar.jar

Et donc dans le répertoire test_apk_jasmin vous retrouverez tout le code source et vous pourrez étudier celui ci sous toutes ses coutures.
rmq: vous pourrez utiliser d’autres outils comme JD-GUI pour lire le jar test_apk-debug_dex2jar.jar

Accessoirement vous pourrez aussi repackager suite une modification si vous le souhaitez

# build jar
d2j-jasmin2jar.sh -f -o test_apk_jasmin.jar test_apk_jasmin/
# verify jar
d2j-asm-verify.sh test_apk_jasmin.jar
# convert to dex
d2j-jar2dex.sh -f -o classes.dex test_apk_jasmin.jar
# make a copy
cp test_apk-debug.apk test_apk-debug-toast.apk
# replace classes.dex in test_apk-debug-toast.apk
zip -r test_apk-debug-toast.apk classes.dex
# sign the apk
d2j-apk-sign.sh -f -o test_apk-debug-toast-signed.apk test_apk-debug-toast.apk

et voilà facile

So enjoy!

Tomcat en mode cluster et avec session multicast

Hello,

Je m’amuse toujours comme un petit fou à utiliser mon petit cluster cubietruck et là je me suis décidé à l’utiliser avec tomcat.

Pour commencer, j’ai 3 serveurs que je vais appeler simplement server1, server2 et server3.

Et donc le principe est assez simple c’est de mettre en frontal sur le server1 un apache qui va jouer le rôle de load balancer sur 3 instances de tomcat, une sur server1,2 et 3.

APACHE

Sur le serveur principal (server1) il vous faudra installer apache et un mod

sudo apt-get install apache2 libapache2-mod-jk

ensuite éditez le fichier /etc/apache2/mods-available/jk.conf

et modifiez le de telle façon http://svn.apache.org/repos/asf/tomcat/jk/trunk/conf/httpd-jk.conf

sudo nano /etc/libapache2-mod-jk/workers.properties

//workers.properties
worker.list=loadbalancer,status
worker.server1.port=8009
worker.server1.host=server1.com
worker.server1.type=ajp13

worker.server2.port=8009
worker.server2.host=serevr2.com
worker.server2.type=ajp13

worker.server3.port=8009
worker.server3.host=server3.com
worker.server3.type=ajp13

worker.server1.lbfactor=1
worker.server2.lbfactor=1
worker.server3.lbfactor=1

worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=server1,server2,server3

worker.status.type=status

d’ailleurs dans les différents fichiers hosts il faudra que vous rajoutiez l’adresse ip et l’adresse dns associée pour qu’ils se connaissent mutuellements sous les noms server1.com, server2.com et server3.com

Modifiez les paramètres d’apache

 sudo nano /etc/apache2/sites-available/default

comme suit

<VirtualHost *:80>.

………………..

JkMount /status status

JkMount /* loadbalancer

</VirtualHost *:80>

et pour finir un petit redémarrage

service apache2 restart

 

TOMCAT

Téléchargez la dernière version de tomcat et java si vous ne l’avez pas déjà (booooooooooooohhhh si vous ne l’avez pas!!!!) et placez les fichiers décompresser dans un répertoire de travail sur les 3 serveurs. Vous pourriez faire un apt-get mais je préfère pas c’est plus simple à gérer à la main je trouve.

éditez le fichier tomcat/conf/server.xml

décommentez

<Connector port= »8009″ protocol= »AJP/1.3″ redirectPort= »8443″ />

dans la balise engine

<Engine name= »Catalina » defaultHost= »localhost » jvmRoute= »server1″>

<!–For clustering, please take a look at documentation at:
/docs/cluster-howto.html (simple how to)
/docs/config/cluster.html (reference documentation) –>
<!–
<Cluster className= »org.apache.catalina.ha.tcp.SimpleTcpCluster »/>
–>
<Cluster className= »org.apache.catalina.ha.tcp.SimpleTcpCluster »
channelSendOptions= »8″>
<Manager className= »org.apache.catalina.ha.session.DeltaManager » 

     expireSessionsOnShutdown= »false » 

      notifyListenersOnReplication= »true »/>
<Channel className= »org.apache.catalina.tribes.group.GroupChannel »>
<Membership className= »org.apache.catalina.tribes.membership.McastService » 

     address= »228.0.0.4″
     port= »45564″
     frequency= »500″
     dropTime= »3000″/>
<Receiver className= »org.apache.catalina.tribes.transport.nio.NioReceiver »
     address= »auto »
     port= »4000″
     autoBind= »100″
     selectorTimeout= »5000″
    maxThreads= »6″/>
<Sender className= »org.apache.catalina.tribes.transport.ReplicationTransmitter »>
    <Transport className= »org.apache.catalina.tribes.transport.nio.PooledParallelSender »/>
</Sender>
<Interceptor className= »org.apache.catalina.tribes.group.interceptors.TcpFailureDetector »/>
<Interceptor className= »org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor »/>
</Channel>
<Valve className= »org.apache.catalina.ha.tcp.ReplicationValve »
       filter= ».*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.css;.*\.txt; »/>
<ClusterListener className= »org.apache.catalina.ha.session.ClusterSessionListener »/>
</Cluster>

<Context distributed= »true » path= »/ » /> #chemin des applis distribuées

</Engine>

 

maintenant tout est près à déployer.

Mettez en place tous vos tomcat sur tous vos serveurs, par contre faites attention dans votre server.xml de mettre à jour la balise engine avec le bon nom du worker  jvmRoute= »serverX »

Avant de tout lancer il faut activer le multicast sur tous les serveurs pour qu’ils puissent se reconnaître.

sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

netstat -nr

Maintenant vous pouvez tout lancer tomcat/bin/startup.sh.

D’ailleurs si vous voulez pointer vers une autre version de java n’oubliez pas que vous pouvez créer un fichier setenv.sh dans ce répertoire bin comme par exemple

export JAVA_HOME=/root/Workspace/java/jdk1.8.0_06

export CATALINA_PID= »$CATALINA_BASE/tomcat.pid »

Dans ce cas j’ai eu qq problème car à déplacer des fichiers (java et tomcat) j’ai perdu qq droits d’exécution donc un petit chmod +x * dans les répertoires bin (java et tomcat) devrait résoudre le pb.

Si vous voulez vérifier que tout fonctionne il y a un fichier jsp qui traîne ici que vous pourrez déposer dans webapps/examples/jsp

par contre pour rendre une application distribuable il faudra que le fichier web.xml de l’appli contienne l’information

<distributable/>

Donc n’oubliez pas de mettre à jour le web.xml de « examples »

 

Voici un très bon tuto et cet autre tuto qui m’ont permis de réaliser cela.

So Enjoy!

ip dynamique et ovh

Hello,

Le problème que j’ai rencontré est que j’ai une pauvre adresse dynamique chez mon fournisseur d’accès donc pour pouvoir retrouver mon adresse ça devient vite compliquer DynDNS c’est devenu payant et les autres je suis moyennement convaincu seul le port 80 est redirigé… bref sachant que j’héberge des serveurs chez ovh j’ai trouvé un petit outils plutôt pratique qui s’appelle updatedd qui permet de mettre à jour chez ovh les dns, donc on va mettre en place un script, un cron et on sera bon :)

Vous trouverez updatedd ici

Pour que ça fonctionne avec OVH il faudra faire une petite modification

nano updatedd-2.6/src/plugins/libovh.h

ligne 24 rajoutez « www »

#define DYNDNSHOST « www.ovh.com »

Après il n’y a plus qu’à builder

~$ ./configure

~$ make

~$ su

# make install

 

Avant de pouvoir faire quoi que ce soit il va vous falloir créer un compte DynHOST chez OVH. Et c’est tant mieux car il faut savoir que les identifiants seront envoyés en clair sur le net… super… mais bon c’est le jeux.

voici le tuto ovh qui vous explique comment créer votre compte dynhost.

maintenant vous pouvez exécuter la commande pour mettre à jour le dns.

updatedd ovh — –ipv4 ip username:password host

où ip: votre adresse ip, username le login dynhost, password, et le host: l’url que vous voulez y associer

il n’y a plus qu’à créer un script. Mais le problème c’est qu’il nous manque l’adresse ip il nous faut savoir qu’elle est notre adresse ip depuis l’extérieur. Là je vais faire intervenir un script php très simple que j’ai nommé  getipext.php:

<?php
$ip = getenv(« REMOTE_ADDR ») ;
Echo $ip;
?>

Et il va vous retourner votre adresse depuis l’extérieur.

Pour pousser le bouchon un peu plus loin voici un autre script pour savoir si on doit  faire une mise à jour du dns. Je l’ai appelé getiphost.php

<?php

$url = ‘host';
$ip = gethostbyname($url);

echo $ip;

?>

Voilà maintenant on va construire un script dynhostUpdate.sh pour gérer cette mise à jour et vous générer un fichier de log à chaque changement d’ip

#!/bin/sh

# OVH – DynHost
#
# Permet de mettre à jour le champ DYNHOST
# pour votre nom de domaine.

# La mise à jour ne se fait que si l adresse IP
# a effectivement changé.
# Fichier de log: dynhost.log

# Mod par Michoo_42

HOST=’host’
LOGIN=’username’
PASSWORD=’password’
LOCALPATH=’/xxx/xxx/xxx’

# Obtention de l adresse IP actuelle et celle enregistrée lors du dernier changement
#echo $LOGIN $PASSWORD $HOST
IP=$(curl -s http://siteweb/getipext.php)
OLDIP=$(curl -s http://siteweb/getiphost.php)

if [ « $OLDIP » != « $IP » ];
then
echo `date` « OLDIP: $OLDIP , NEW IP: $IP  » >> $LOCALPATH/dynhost.log
/usr/local/bin/updatedd ovh — –ipv4 $IP $LOGIN:$PASSWORD $HOST >> $LOCALPATH/dynhost.log
fi

voilà (chmod +x dynhostUpdate.sh) maintenant on passe au cron qui est un scheduler

crontab -e

et à la fin rajoutez la ligne qui va bien

*/30 *  * * * /chemin/dynhostUpdate.sh >/dev/null 2>&1

pour moi c’est toutes les 30 minutes mais après vous faites comme vous le sentez.

 

Voilà maintenant on va pouvoir passer aux choses sérieuses la mise en place du vpn ;)

So enjoy!

Installer Cyanogen et kali sur un Samsung Galaxy note 2

Hello,

Je cherchais un truc dans mes tiroirs quand je suis tombé nez à nez avec un Samsung Galaxy note 2 que ma femme avait mis de côté après l’achat d’un nouveau tel. Du coup j’ai oublié ce que je cherchais et je me suis amusé avec ce très bon téléphone :)

Donc j’ouvre la bête voir ce qu’il y avait dedans et là re-surprise je trouve une  carte micro SD de 64Go… comment dire c’est juste fou comment peut on abandonner cette petite chose là!!!

Je regarde donc ce que je peux faire rapidement et là je tombe sur Kali. Pour faire suite à mon précédent article sur kali sur mon macosx je me dis parfait je me lance!

 

Tout d’abord il faut être root de son android (tant qu’à faire, hein sinon c’est pas drôle) et je me dis au passage je vais lui faire une petite cure de jouvance avec la dernière release de Cyanogen.

là je tombe sur un tuto tout fait

Donc tout d’abord téléchargez et installez heimdall un outils qui va pouvoir écraser le rommanager d’origine avec clockwork (à télécharger ici).

Donc il suffit de démarrer le téléphone  avec Volume Down, Home, & Power accepter le disclaimer, brancher le câble USB à votre ordi possédant heimdallpuis lancez la commande:

heimdall flash –RECOVERY recovery-clockwork-6.0.4.3-n7100.img –no-reboot

Débranchez l’usb er rebootez en mode recovery Volume Up, Home, & Power (moi j’ai un peu galérer mais ça a fonctionné peut être que adb reboot recovery le ferait aussi)
Vous pouvez rencontrer des problèmes.

« ERROR: Claiming interface failed! ». Alors il faut désactiver le drivers USB.

Sur mac

sudo kextunload -b com.apple.driver.AppleUSBCDC;

sudo kextunload -b com.apple.driver.AppleUSBCDCACMControl;

sudo kextunload -b com.apple.driver.AppleUSBCDCACMData;

Ou bien si vous avez installé Samsung Kies:

sudo kextunload -b com.devguru.driver.SamsungComposite;

sudo kextunload -b com.devguru.driver.SamsungACMData

sudo kextunload -b com.devguru.driver.SamsungACMControl

 

 

téléchargez la version que vous souhaitez  sur l’excellent site de cyanogen

ensuite démarrez en mode recovery (adb reboot recovery )
Volume Up, Home, & Power

backup and restore histoire de ne pas se retrouver comme un couillon.
Vidage des données wipe data/factory reset.

Sur votre ordi poussez la version de cyanogenmod avec adb

adb push update.zip /storage/sdcard1/

une fois terminé reboot system now

et vous devriez avoir une rom toute neuve et être en super utilisateur

Ensuite installez google apps

maintenant vous avez un système fonctionnel et vous pourrez télécharger les applications suivantes
vnc viewer, linux deploy, WiFi Keyboard (pour pouvoir agir plus facilement au clavier)

Maintenant il faudra formatter votre carte sd en ext4 sur votre linux préféré autrement débrouillez vous. Moi le exFat ça l’a pas fait mais je n’ai pas poussé. En tout cas du fat32 vous pourrez pas avoir une image de plus de 4Go.
Vous pourrez ensuite l’insérez dans votre téléphone puis dans la fenêtre console

$ su

# chown media_rw:media_rw /mnt/media_rw/sdcard1

# chmod g+w /mnt/media_rw/sdcard1

et cela vous permettra d’avoir accès en écriture sur la partition en ext4 de votre sdcard :)

maintenant vous pourrez suivre un tuto pour installer kali en toutes tranquillité (chez korben )
faites une partition de 15000MB sinon il fera par défaut 4Gb et vous serez beaucoup trop juste…

Voilà vous pouvez lancer kali sur votre mobile…mais ce n’est pas parfait vous vous apperceverez qu’elle est quasi vide… il vous faudra faire une mise à jour

sudo apt-get update

sudo apt-get install kali-linux-full

sinon si vous voulez faire d’autres packages  moi je me suis juste installé kali-linux-web c’est suffisant pour mes besoins.

 

Voilà c’est là que ce termine ce tuto et c’est là que commence vos bidouilles :p

 

So enjoy!

 

how to build hadoop 2.3.0 for cubietruck with lubuntu server ?

Hi,

After so many times to build hadoop on my cubietruck, I made a simple tutorial for helping you building clusters :)

 

So, for begining, you need tools for building

$ sudo apt-get install build-essential

$ sudo apt-get install g++ autoconf automake libtool cmake zlib1g-dev pkg-config libssl-dev

$ sudo apt-get install maven

(maybe you have to libwagon-java pb do : sudo dpkg -i –force-all /var/cache/apt/archives/libwagon2-java_2.2-3+nmu1_all.deb)

Another prerequisite, protoco buffer: protobuf version 2.5, which can be downloaded from https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz

$ tar xzvf protobuf-2.5.0.tar.gz
$ cd protobuf-2.5.0
$ ./configure –prefix=/usr
$ make
$ make check
$ sudo make install

 

Having all the tools, we can now build Hadoop native libraries.

$ wget http://mirror.catn.com/pub/apache/hadoop/core/hadoop-2.3.0/hadoop-2.3.0-src.tar.gz

$ tar xzvf hadoop-2.3.0-src.tar.gz

$ cd hadoop-2.3.0-src

for cubietruck you have to apply a patch https://issues.apache.org/jira/browse/HADOOP-9320
and a second patch

Index: hadoop-common-project/hadoop-auth/pom.xml
===================================================================
— hadoop-common-project/hadoop-auth/pom.xml (revision 1543124)
+++ hadoop-common-project/hadoop-auth/pom.xml (working copy)
@@ -54,6 +54,11 @@
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty-util</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
<scope>test</scope>
</dependency>

Then you can build with openjdk1.8.0 hard float (from oracle)
if you need to know what kind of arm you have  dpkg –print-architecture.

So now let’s beggin for one night building

$ mvn package -Pdist,native -DskipTests -Dtar

 

#INSTALLATION

In you target directory of your build

$ mv hadoop-2.3.0 hadoop
$ sudo mv hadoop /usr/local

 

After you can generate ssh key

$ ssh-keygen -t rsa -P  » -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ ssh localhost
$ exit

Now we have to modify some sh and the .bashrc

$ cd ~$ nano .bashrc

# Add those exports for Hadoop
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0
export HADOOP_PREFIX=/usr/local/hadoop
export PATH=$PATH:$HADOOP_PREFIX/bin
export PATH=$PATH:$HADOOP_PREFIX/sbin
export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}
export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
export YARN_HOME=${HADOOP_PREFIX}

 

$ nano $HADOOP_PREFIX/etc/hadoop/hadoop-env.sh

#add this
export HADOOP_HEAPSIZE=1024
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
export HADOOP_OPTS= »-Djava.library.path=$HADOOP_PREFIX/lib »

 

$ nano $HADOOP_PREFIX/etc/hadoop/yarn-env.sh

#add this
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
export HADOOP_OPTS= »-Djava.library.path=$HADOOP_PREFIX/lib »

 

$ nano $HADOOP_PREFIX/etc/hadoop/core-site.xml

#add this property in configuration
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
<description>The name of the default file system. A URI whose
scheme and authority determine the FileSystem implementation.
The URI’s scheme determines the config property (fs.SCHEME.impl) naming
the FileSystem implementation class. The URI’s authority is used to
determine the host, port, etc. for a filesystem.
</description>
</property>

 

$ nano $HADOOP_PREFIX/etc/hadoop/hdfs-site.xml

#add this property in configuration
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/root/workspace/hadoop/dfs/name</value>
<final>true</final>
</property>

<property>
<name>dfs.datanode.data.dir</name>
<value>file:/root/workspace/hadoop/dfs/data</value>
<final>true</final>
</property>

<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>

 

$ nano $HADOOP_PREFIX/etc/hadoop/mapred-site.xml

#add this property in configuration
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

<property>
<name>mapred.system.dir</name>
<value>file:/root/workspace/hadoop/mapred/system</value>
<final>true</final>
</property>

<property>
<name>mapred.local.dir</name>
<value>file:/root/workspace/hadoop/mapred/local</value>
<final>true</final>
</property>
</configuration>

 

$ nano $HADOOP_PREFIX/etc/hadoop/yarn-site.xml

#add this property in configuration
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>

then do a name node format

$ hdfs namenode -format

Now your hadoop server is ready to start him

$ start-all.sh // will start all hadoop processes

$ jps // will report the local VM identifier

$ stop-all.sh // will stop all hadoop processes

To check if everything is running and to conclude this tutorial use your browser

DFSHealth

http://xxx.xxx.xxx.xxx:50070/dfshealth.jsp

http://xxx.xxx.xxx.xxx:50070/dfshealth.html

Status

http://xxx.xxx.xxx.xxx:50090/status.jsp

 

$ netstat -netpl | grep java

 

That’s all for today

So enjoy hadoop!

Le bitcoin meaning et mining :)

Vous avez surement tous entendu parlé de la monnaie Bitcoin récemment avec son actualité rebondissante. Je me suis un peu plus penché sur ces nouvelles monnaies dites crypto monnaies.

DIGSOUTH_ShaneSnowQA_042913

 

Première surprise en regardant ce sujet,  il y a une véritable foultitude de monnaie!!!

Dont 3 qui se démarquent:
-évidemment, le bitecoin
-puis litecoin
-et le dernier dogecoin

Je ne savais pas trop par laquelle commencer mais autant prendre la plus connue.

  • Alors Le bitcoin comment ça marche?

Je ne vais pas rentrer dans les détails mais si vous voulez savoir comment ça fonctionne, il y a une video très simple et des explications sur leur site https://bitcoin.org/en/

Ici vous trouverez une publication complète et très intéressante
Et un petit podcast en provenance de la place de la toile de France Culture dédié au bitcoin, très instructif comme tous leurs podcasts d’ailleurs

Si ça ne vous suffit pas et qu’il vous faut  vous plonger dans les algo les sources sont accessibles, c’est un logiciel libre !

  • Le commencement!

Au commencement, il y a le porte monnaie. Il faudra installer une application sur votre ordinateur qui va vous permettre de créer votre porte monnaie.
Moi j’ai utilisé bitcoin-qt

sudo apt-get install bitcoin-qt

une des particularités de la monnaie c’est que tout le monde connait toutes les transactions de la monnaie. C’est sympa mais au premier lancement le temps de chargement va être très long du genre qq jours. Surtout avec toutes les transactions en ce moment ya du monde à télécharger. Il y a moyen d’aller un peu plus vite en téléchargeant le torrent qui doit bien faire 15Go.
il suffira juste de le déposer brutalement dans votre répertoire ./bitcoin où se trouve votre wallet.dat

  • La sécurité

Tout d’abord, il faudra crypter votre porte monnaie pour empêcher que les gens fassent les transactions à votre place.
De plus pensez bien à faire un backup de votre porte monnaie car celui ci n’existe qu’à travers le fichier wallet.dat sur votre ordinateur
lisez attentivement https://en.bitcoin.it/wiki/Securing_your_wallet

  • L’évolution du marché

Si vous voulez voir un peu le volume des transactions
https://blockchain.info/fr/charts
L’état du marché
http://bitcoincharts.com/markets/
le taux de conversion courant
http://preev.com/btc/usd

  • Miner

Ce qui est original avec cette monnaie c’est qu’elle est limitée en nombre de pièces et qu’elles ne sont pas toutes fabriquées. Et pour cela un simple ordianteur suffit!
Ca y est, je vous vois déjà en train de vous dire que sans effort vous pourrez gagner de l’argent, en laissant simplement tourner son ordinateur. C’est pas faut mais rien est simple dans la vie…

Pour les fabriquer c’est mathématique, il suffit de casser du code SHA256! Et comme il y a 256 bits il n’y aura pas plus de 21millions de pièces (2^256 pièces). Au passage dites vous que vous allez contribuer à casser le code SHA256. Il y a même des théories qui disent que c’est la NSA qui est à l’origine de cette monnaie pour pouvoir décrypter un max de données!!!!

Bref, arrêtons la théorie du complot et revenons sur un point important: la difficulté. En effet,  celle ci est variable et ne fait que croître! Au fur et à mesure du minage, les blocs plus simples sont cassés pour rapporter ces fameux bitcoins et du coup les suivants deviennent de plus en plus compliqués. Si vous voulez plus de détails https://en.bitcoin.it/wiki/Difficulty. Voici la cible en temps réelle

En effet, par exemple, en 2010, avec un ordinateur réalisant 1000 Khps, avec une difficulté de 14484, le temps de générer un bloc etait de 2 ans! aujourd’hui la difficulté est de 4 milliards… Donc autant vous dire que c’est pas gagné…

C’est pour cela qu’ils ont inventé les pool de minage! Le but c’est de s’associer à plusieurs pour miner un block et le casser plus facilement et chacun récupère sa part en bitcoin. L’union fait la force!!

il y a plein de pool de minage . Vous en trouverrez où vous devrez vous authentifier, où il y aura des taxes,… chacun a ses contraintes.
Moi j’utilise eligius, c’est simple pas besoin de s’enregistrer, juste de donner son adresse de porte monnaies.

Autrement vous pouvez mettre en place votre propre pool  mais il faudra se faire connaître pour que cela soit efficace et surtout vous risquez les attaques c’est sacrément risqué à mon goût…

Bon maintenant vous savez comment ça se passe, faut s’attaquer au minage!

Pour cela il vou faut du matériel
Il y a trois types de matériel
-CPU: le microprocesseur de votre ordinateur
-GPU: ceux de votre/vos carte(s) graphique(s)
-ASIC: qui sont des microcontrollers dédiés au cassage SHA256 donc hyper efficace aussi bien techniquement qu’énergétiquement.

L’ASIC est essentiel si vous souhaitez miner du bitcoin! Le CPU ou les GPU ne peuvent traiter au grand max quelques centaines de Mega hash par secondes alors que l’ASIC ira au moins 100 fois plus vite. Mais il est dédié qu’à ça, vous ne pourrez pas en faire grand chose autrement.

voici un comparatif du matériel existant
https://en.bitcoin.it/wiki/Mining_hardware_comparison

En regardant sur Ebay, on voit tout un tas de machines ASIC 30,60,120Gh/s a des prix qui peuvent aller jusqu’à 1000$ !

Donc il faut faire attention à l’investissement que vous ferez, donc faites bien vos calculs savants
http://bitcoinwisdom.com/bitcoin/calculator
http://tpbitcalc.appspot.com/
Ils vous permettront de faire vos premières hypothèses. Mais attention le calcul se base sur une difficulté fixe alors qu’elle croisse de façon exponentielle dans le temps de semaine en semaine.

Il semblait envisageable de miner jusqu’en décembre 2013 mais aujourd’hui un simple mortel ne peut pas produire grand chose, Sauf si vous voulez investir dans une ferme de machines qui ne serviront qu’à casser du SHA256…

Bon comme je ne voulais pas mourir idiot, j’ai fait le test avec 2 clés Antminer à 1.6GH/s que j’ai eu pour 120$. Je me suis installé bgfminer qui est l’outils qui va permettre d’exploiter les Antminer.

antiminer-u1

 

sudo aptitude install autoconf libtool libncurses-dev yasm curl libcurl4-openssl-dev libjansson-dev pkg-config libudev-dev libusb-dev uthash-dev libsensors4-dev libmicrohttpd-dev libevent-dev libusb-1.0-0-dev

git clone https://github.com/luke-jr/bfgminer

cd bfgminer

./autogen.sh

./configure

make

Après rien de plus simple ya plus qu’à lancer la commande suivante

./bfgminer -o stratum+tcp://stratum.mining.eligius.st:3334 -O leCodeDeVotrePorteMonnaie

Je suis donc à 3.2Gh/s et résultat: 0.00039416 BTC par jour (25centimes de dollar)… mouais on est pas rendu. Bref après un vite calcul à une difficulté fixe, je ne serai pas rentable dans l’année….

Certes je peux esperrer que la valeur du bitcoin augmente mais je n’attends pas grand chose.

  • Donc au final ce que j’en conclu de cette expérience de bitcoin et de son minage :

La transparence de cette monnaie est très intéressante et originale. Personne n’est identifié autrement que par le code de son porte monnaie mais toutes les transactions entre porte monnaies sont accessibles par tout le monde. Et c’est tout le monde(P2P) qui garantie la cohérence du système.

Le plus intéressant c’est la liberté de pouvoir faire des transactions de porte feuilles à porte feuilles sans à avoir a passer par un intermédiaire qui va ponctionner un certain pourcentage de la transaction.
Par contre pour la conversion BTC vers une autre monnaie (ou l’inverse) comme ça ne se fait pas à travers des banques (pour le moment)  du coup il y a de vrais risques transactionnels comme MTGOX qui a fait faillite récemment ou bien des risques de vol avec des fausses places de marché. J’ai trouvé celles là qui ont l’air pas trop risqué : https://bitcoin-central.net/,https://www.virwox.com, https://btc-e.com/, https://coinbase.com

Le minage n’est plus intéressant à cause de cette difficulté qui a sacrément augmenté et qui implique aujourd’hui de grandes quantités de machines excessivement puissantes et couteuses. Si vous ne pouvez viser des centaines de Gh/s voir le Th/s vous n’irez pas bien loin… Donc faites attention sur Ebay d’ici quelques semaines vous verez plein de machines pas chères…

Le meilleur coup à faire c’est de suivre le cours du BTC et d’en acheter au moment le plus opportun mais étant donné l’instabillité du cours c’est un risque à mesurer. Bref ça s’appelle boursicoter. Il sera peut être plus judicieux de miser sur une entreprise sur laquelle vous croyez que de miser sur du BTC….

Bon pour le coup avec ces 2 clés Asic ant miner je ne sais pas trop ce que je vais en faire. Je vais attendre 2/3 mois histoire de voir comment ça tourne voir si je peux récupérer qq millièmes de bitcoin supplémentaires.

Après peut être que du côté du hack de password il y a un prochain article à faire faut voir(http://security.stackexchange.com/questions/211/how-to-securely-hash-passwords/31846#31846) mais je pense que je vais tout simplement les vendre si d’ici là elles ont encore une valeur marchande…

C’était un sujet intéressant sur la crypto monnaie. le principe de liberté et d’anonymité me plaisent bien. Maintenant à voir comment celle ci va évoluer ou comment le LiteCoin (ou une des centaines d’autres) va la remplacer.

So Enjoy!

 

RTL SDR – la clé à l’écoute

Bonjour,

Je me suis acheté un petit joujou pour geek :)

FM-DAB-DVB-T-USB-DVB-T-RTL2832U-R820T-Support-LINUX-WIN7

une clé usb pour recevoir la tv et la fm vous allez me dire. Ouais et alors …

Et bien c’est bien plus que ça!! Car depuis quelques temps est apparu des applications qui permettent d’exploiter pleinement ces clés usb sur une grande plage de fréquence.
Donc vous pouvez imaginer plein de choses… Si vous manquez d’idées jetez un oeil ici car il se passe pas mal de choses sur les ondes :)
Pour commencer on va s’amuser à écouter les avions. En effet il faut savoir que les avions émettent tout un tas d’information (vitesse, altitude, position…) sur les ondes et n’importe qui peut écouter.Pour cela il vous faudra une clé RTL/SDR que vous trouverez très facilement chez amazon ou sur ebay. Les mots clés: SDR et Realtek RTL2832U. Après il n’y a plus qu’à brancher installer 2-3 drivers et application pour visualiser sur une belle map google les avions qui circulent aux alentours.ScreenArticleSDRVous pouvez l’installer sur Mac OSX et sur linux sans problème après sous windows je vous laisse vous débrouiller.Ici on va traiter notre cas sur linux (sur Mac avec macport ça se fait facilement)On va donc récupérer un petit logiciel qui s’appelle dump1090 (1090 c’est pour la fréquence)

git clone https://github.com/antirez/dump1090

j’ai dû installer au préalable cmake, libboost, librtlsdr-dev et usb-1.0 pour pouvoir compiler, vous aurez sûrement d’autres choses à installer  (je suis sur Kali) pour vous inspirer regardez ici ou ici

donc un petit cmake dans le répertoire de dump1090. Vous verrez il n’y a pas beaucoup de fichier. Je pense que vous pourrez même facilement rentrer dans le code source pour vous l’approprier et faire d’autres choses. Un projet d’école intéressant.

Bon maintenant vous pouvez lancer l’application. Il y a plusieurs mode. Un mode classique qui va vous afficher dans le terminal tous les avions au dessus de votre tête. Intéressant mais pas très fun.

Il y a un deuxième mode qui vous permet d’afficher en temps réel la position de l’avion sur google map :)

./dump1090 –net –net-ro-port 31001 –net-http-port 8080

et vous n’aurez plus qu’à vous connecter avec votre navigateur préféré sur http://127.0.0.1:8080 et vous verrez ce que l’on voit un peu plus.

pour plus de détails sur les commandes disponibles regardez sur le github d’antirez

Voilà un petit projet fun que vous pourrez perfectionner en mettant une antenne plus adaptées mais surtout voyez ce projet comme un cas d’école intéressant pour rentrer dans la rtl sdr. Le code source n’est pas inacessible donc amusez vous à le modifier. Il y a tellement de possibilités!!

 

So enjoy!!

 

 

 

 

Installer Kali sur un macbook pro mid-2012

Bonjour,

Voici un petit article pour reprendre contacte avec vous car depuis cet été il y a eu pas mal de changement dans ma vie perso… Je vous passe les détails, mais aujourd’hui je me retrouve à Montréal à faire mes petites bidouilles ;)

Donc ma problématique aujourd’hui, c’est que Mac Osx c’est bien mais dès que je veux aller plus loin depuis la dernière version Mavericks, je n’arrête pas de tout casser :)

Certes je ne suis peut être pas doué ou Mavericks n’est pas encore assez mûre ou je ne sais quoi… mais depuis quelques temps je regardais du côté de l’oeil Backtrack qui aujourd’hui s’appelle Kali avec intérêt tout du moins par curiosité sur la sécurité.

Bon je ne suis pas très rassuré ou très confiant de basculer toutes mes données personnelles sur un ordi avec comme os Kali… mais en même est ce que ça n’a jamais été un risque avec les autres os…

 

Bref, arrêtons de trop réfléchir et commençons à agir!

 

Pour commencer il vous faut une clé USB 4Go au moins ça devrait suffir.

Remarque: la peur de ne pas pouvoir revenir en arrière est présente mais après tous les essais, j’ai constaté que du moment où vous ne trifouillez pas la partition de boot et de restore de la machine, vous pourrez toujours faire un restore complet.Avec une simple connexion internet (wifi et peut être ethernet) avec un simple cmd-R au démarrage vous pourrez réinstaller MacOsx.

 

1)  Sur votre Mac , depuis l’utilitaire de disque créez une seconde partition de la taille que vous voulez faire votre OS.

disk-utility-partition1

Vous pouvez la créer en fat32 si vous voulez mais de toute façon à l’installation de Kali vous la reforméterez .

Attention si votre disque principal est crypté ce tuto ne marchera pas. J’ai fait pas mal d’essai et du coup je me suis résigné à remettre mon disque en non crypté car autrement faut écrire sur la partition EFI du mac et donc il y avait un risque de “fucker” (expression montréalaise qui m’est chère aujourd’hui) la récupération de l’os

2)  clé usb

On va utiliser Unetbootin pour installer Kali sur la clé usb car les commande dd qu’on trouve sur le tuto ne permettent pas d’installer un EFI

– Téléchargez l’iso de Kali sur leur site internet

– Installez Kali sur la clé usb avec Unetbootin

– Sur la clé, créez un répertoire EFI dans lequel vous mettrez tous les fichiers ftp://mirrors.kernel.org/fedora/releases/18/Fedora/x86_64/os/EFI/

– il faudra modifier le fichier grub.cfg pour pouvoir lancer Kali

 

# Config file for GRUB2 – The GNU GRand Unified Bootloader
# /boot/grub/grub.cfg

# DEVICE NAME CONVERSIONS
#
# Linux Grub
# ————————-
# /dev/fd0 (fd0)
# /dev/sda (hd0)
# /dev/sdb2 (hd1,2)
# /dev/sda3 (hd0,3)
#
# root=UUID=dc08e5b0-e704-4573-b3f2-cfe41b73e62b persistent

set menu_color_normal=yellow/blue
set menu_color_highlight=blue/yellow

function load_video {
insmod efi_gop
insmod efi_uga
insmod video_bochs
insmod video_cirrus
insmod all_video
}

load_video
set gfxpayload=keep

# Timeout for menu
set timeout=5

# Set default boot entry as Entry 0
set default=0
set color_normal=yellow/blue

menuentry « Kali – Boot Non Persistent Mode » {
set root=(hd0,1)
linuxefi /live/vmlinuz boot=live noconfig=sudo username=root hostname=kali
initrdefi /live/initrd.img
}

menuentry « Kali – Boot Persistent » {
set root=(hd0,1)
linuxefi /live/vmlinuz boot=live noconfig=sudo username=root hostname=kali persistence
initrdefi /live/initrd.img
}

menuentry « Kali Failsafe » {
set root=(hd0,1)
linuxefi /live/vmlinuz boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
initrdefi /live/initrd.img
}

menuentry « Kali Forensics – No Drive or Swap Mount » {
set root=(hd0,1)
linuxefi /live/vmlinuz boot=live noconfig=sudo username=root hostname=kali noswap noautomount
initrdefi /live/initrd.img
}

menuentry « Kali Graphical Install » {
set root=(hd0,1)
linuxefi /install/gtk/vmlinuz video=vesa:ywrap,mtrr vga=788
initrdefi /install/gtk/initrd.gz
}

menuentry « Kali Text Install » {
set root=(hd0,1)
linuxefi /install/vmlinuz video=vesa:ywrap,mtrr vga=788
initrdefi /install/initrd.gz
}

 

 

Et voilà votre clé est prête à être démarrée sur OSX

 

3) Mettez la clé sur votre MacOSX démarrez le et restez appuyé sur la touche « alt » pour arriver sur le boot et vous verrez apparaître un disque dur qui s’appelle EFI. Cliquez dessus et lancez l’installation de KALI sur la partition créée précédemment!!!

4) Une fois que c’est fait, redémarrez votre Mac et bootez normalement, ça devrait démarrer sur Maverick.

5) Téléchargez rEFInd pour macosx/linux. http://sourceforge.net/projects/refind/files/0.7.6/refind-bin-0.7.6.zip/download

6) C’est une archive à décompresser sur son disque. Un petit

sudo chmod +x install.sh

pour donner les droits d’execution pour le fichier install.sh et lancez la commande depuis le répertoire d’installation avec le terminal

./install.sh –alldrivers

Voilà maintenant vous pouvez éteindre votre ordinateur. En redémarrant votre Os, vous devriez maintenant avoir un nouvel écran de boot de ce style. (désolé j’ai la flemme de faire des captures d’écran…. merci google image)

images

7) Surprise vous pouvez choisir votre distribution Kali et démarrer dessus. L’écran de login est un peu chelou, il faut saisir d’abord le login puis ensuite votre pass… enfin vous verrez. (la solution: il vous faudra créer un compte utilisateur autre que root pour qu’il vous propose directement des utilisateurs)

Deuxième et plus grande surprise tout marche out of the box!!!!! Je m’attendais d’après ce que dit les forum à devoir bidouiller le trackpad, la connexion wifi, l’acpi mais non tout marche directement!!!! (ma version de Kali est la 1.0.3)

kali-linux-menu

 

Pour personnaliser un peu le theme je vous conseille d’installer un utilitaire de perso pour  avoir  quelque chose de plus sympa

sudo apt-get install gnome-tweak-tool

Moi j’utilise un thème qui s’appelle Dorian:

http://gnome-look.org/content/show.php/Dorian+Theme?content=157200

À décompresser dans Usr/share/themes ;)

 

 

Dernières petites choses:

-pour la souris.

Allez dans le paramétrage et vous verrez dans la souris un onglet trackpad vous pourrez régler certains trucs.

Si vous souhaitez retrouver le mouvement naturel du trackpad MacOsx

dans le home du root. Créez un fichier .Xmodmap avec

pointer = 1 2 3 5 4 6 7 8 9 10 11 12

-pour les fonts qui ne sont pas très belle d’origine avec le gnome tweak tool vous pourrez changer ça mais auparavant faudra télécharger et installer des fonts supplémentaires déjà avec ça:

apt-get install ttf-liberation

Puis vous pouvez récupérer une typo idéale pour coder: inconsolata
http://www.levien.com/type/myfonts/inconsolata.html

 

Et voilà ready to hack!!!

 

 

liens d’inspiration de la bidouille

https://forums.kali.org/showthread.php?19266-How-to-install-Kali-with-EFI-and-dualboot-on-Macbook-Pro

https://wiki.archlinux.org/index.php/MacBook_Pro_8,1_/_8,2_/_8,3_%282011%29

https://forums.kali.org/showthread.php?19266-How-to-install-Kali-with-EFI-and-dualboot-on-Macbook-Pro

http://securitty.tumblr.com/post/54774007612/kali-linux-macbook-usb-boot-full-disk-encryption

 

Et bien alors?

Hello,

« www.i.want.2.be.free.fr » n’est plus « Internet of Everything » est né!

L’auteur change et le blog aussi et c’est tant mieux!!! Voilà bien 4 mois que je n’ai pas écris un article car je voulais plutôt travailler sur la refonte du site pour que ce soit plus agréable et plus lisible. Je me suis enfin bougé le c.. et je vous ai pondus ce joli petit site qui j’espère vous plaira tout autant.

Normalement, grâce à ça je devrais vous partager plus facilement ce qui se passe dans l’ombre de mon atelier :)

 

alors à suivre