Point d’accès wifi avec un Raspberry Pi

raspberry-ban

Nous avons récemment eu besoin d’avoir un point d’accès sur le Raspberry Pi. Cet article a pour but de faire un petit rappel lorsque l’on va en avoir de nouveau besoin!

Tout d’abord, nous allons commencer par installer le firmware pour le dongle USB :

apt-get install zd1211-firmware

Petite erreur que j’avais avec un freeze du raspberry (dmesg) :

[   43.500170] usb 1-1.3: Could not load firmware file zd1211/zd1211b_ub. Error number -2
[   43.500204] zd1211rw 1-1.3:1.0: couldn't load firmware. Error number -2

Une fois le dongle USB installé sur notre raspberry pi, on configure le serveur DHCPD sur l’interface wifi.

sudo apt-get install isc-dhcp-server
sudo vi /etc/dhcp/dhcpd.conf
sudo ifconfig wlan0 192.168.3.1 netmask 255.255.255.0
sudo /etc/init.d/isc-dhcp-server start

Dans mon cas, j’ai choisi de mettre comme adresse sur notre interface wifi 192.168.3.1

Pour faire le hostspot wifi, j’ai choisi hostapd

sudo apt-get install hostapd
sudo vi /etc/hostapd/hostapd.conf

La configuration est la suivante :

# Configuration récupère sur http://doc.ubuntu-fr.org/hostapd
# interface wlan du Wi-Fi
interface=wlan0
 
# nl80211 avec tous les drivers Linux mac80211
driver=nl80211
 
# Nom du spot Wi-Fi
ssid=oversimple
 
# mode Wi-Fi (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g)
hw_mode=g
 
# canal de fréquence Wi-Fi (1-14)
channel=8
 
#WPA2-PSK-CCMP
wpa=2
wpa_passphrase=oversimple
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
 
# Beacon interval in kus (1.024 ms)
beacon_int=100
 
# DTIM (delivery trafic information message)
dtim_period=2
 
# Maximum number of stations allowed in station table
max_num_sta=255
 
# RTS/CTS threshold; 2347 = disabled (default)
rts_threshold=2347
 
# Fragmentation threshold; 2346 = disabled (default)
fragm_threshold=2346

On peut exécuter hostapd :

hostapd -d /etc/hostapd/hostapd.conf

Cependant, si l’on désire avoir notre point d’accès wifi au démarrage du raspberry , il faut configurer l’interface wifi avec une IP Fixe :

vi /etc/network/interfaces
 
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.3.1
netmask 255.255.255.0

On édite le fichier de config pour le démarrage de hostapd:

 sudo vi /etc/default/hostapd

Le contenu :

allow-hotplug wlan0
iface wlan0 inet static
address 192.168.3.1
netmask 255.255.255.0

On édite dans le fichier /etc/default/hostapd afin de pouvoir sélectionner la configuration requise :

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Puis on active le tout au démarrage :

sudo update-rc.d hostapd enable
sudo update-rc.d isc-dhcp-server enable

Si vous avez besoin que le raspberry fasse une passerelle, il faut activer l’ip forwarding afin que les 2 interfaces(eth0 & wlan0) puissent communiquer.

It’s Oversimple, isn’t it?

Installation d’un Web Services sous Eclipse

Cet article va traiter uniquement de l’installation du Web Service. Un prochain article présentera le fonctionnement entre un Android et le Web Service.

Vous devez déjà avoir installé un serveur Tomcat. (J’ai écrit un article ici)

On utilisera comme web service le Apache Axis2.

La définition de Wikipédia :

Apache Axis2 is a core engine for Web services. It is a complete re-design and re-write of the widely used Apache Axis SOAP stack. Implementations of Axis2 are available in Java and C.

Axis2 not only provides the capability to add Web services interfaces to Web applications, but can also function as a standalone server application.

On va commencer par le télécharger ici

La dernière version pour moi est actuellement : 1.6.2 Release

On décompresse l’archive dans le répertoire /opt/ (et on met les droits utilisateurs)

$ unzip axis2-1.6.2-bin.zip
$ chown -R pierre:pierre axis2-1.6.2

Une fois l’archive décompressée, on va dans Eclipse :
Window > Preferences > Web Services > Axis2 Preferences.

On sélectionne le chemin où on a extrait notre archive : /opt/axis2-1.6.2
Et si tout va bien on a : Axis2 runtime loaded successfully

Après on va dans Server and Runtime (toujours dans Window > Preferences > Web Services).

On choisit notre serveur Tomcat avec la version désirée et on le met en Web Service : Apache Axis2

L’installation du Web Service est fonctionnel.

Création d’un projet pour tester notre Web Service.

File > New > Dynamic Web Project

On sélectionne la version du module à 2.5 Car la version 3.0 n’est pas compatible avec Axis2.

On va modifier notre configuration afin d’ajouter Axis2 Web Services (Core et Extensions).

Ci-dessous la configuration a réaliser :
ConfigurationAxis2WS

Si vous désirez pour les prochaines fois vous pouvez créer une configuration dédiée en cliquant sur « Save as ».

On peut cliquer sur terminer.

Je vais créer une classe Login qui aura une méthode login et prendra deux paramètres (un nom et mot de passe).

Voici le code :

public class Login {
 
	public String login(String username, String password){
		System.out.println("Appel WS : " + username +" "+ password);
		if(username.equals("oversimple") && password.equals("oversimple")){
			return "Mot de passe OK";
		}
		return "Mot de passe KO";
	}
}

Une fois la classe créée, clic droit dessus > Web Services > Create Web Service :
On laisse la configuration par défaut c’est à dire :
Service implementation : Login et on laisse à l’état démarré
Client type : Java Proxy et on laisse à aucun client.

On termine. Il faut patienter environ une minute.

Notre serveur est démarré : On peut allé sur la page suivante : http://localhost:8080/Oversimple/ et cliquer sur « Services »
On peut voir notre service :
Axis2

On a un web service qui fonctionne, dans un prochain article je vais vous présenter le fonctionnement avec Android (ksoap2).

Wake me up !

raspberry-ban

Aujourd’hui, ajout de la fonctionnalité réveil matin à notre Raspberry pi. Pour réaliser tout ça, nous allons greffer à notre raspberry pi : un bouton champignon.

Réalisation du bouton champignon

Pour éteindre notre réveil, nous allons hacker la petite veilleuse pour enfant.

Eclairage-technique-Inspire-GELA-Veilleuse-LED-Vert-11270-444

Vous pouvez la trouvez en cliquant ici.

On commence par démonter la lampe et désolidariser la led de l’interrupteur poussoir. Nous voulons faire ressortir la masse, une entrée pour allumer la led et une sortie pour avoir l’état de l’interrupteur (ouvert ou fermé).

IMG_6027

IMG_6047

IMG_6049

Enfin pour le haut parleur, n’importe lequel peut faire l’affaire. En prévoir un qui soit tout de même auto alimenté, ou bien utiliser comme nous un ampli audio 5V que l’on a relié à l’alimentation du Raspberry pi.
Attention dans le cas où l’ampli audio est alimenté via le Raspberry pi, ne pas oublier de prendre une alimentation plus forte qu’un simple chargeur de téléphone.
Screenshot from 2013-07-24 20:02:20

Ce qui nous donne :

IMG_20130726_194125

Nous codons la détection en C. Pour cela nous réutilisons la même librairie que pour l’alarme de maison : Alarme de maison avec un raspberry pi
La fonction suivante nous permet d’allumer ou d’éteindre la led de notre lampe :

void detectInput(void) {
   uint8_t value;
   uint8_t refValue;
 
   refValue = bcm2835_gpio_lev(PIN_SENSOR);
 
   do {
      // lecture du niveau d'entre©e
      value = bcm2835_gpio_lev(PIN_SENSOR);
      delay(400);
   } while(refValue == value);
 
   bcm2835_gpio_write(PIN_ACTOR, HIGH);
}

Enfin pour ce qui est de jouer de la musique nous allons utiliser le programme aplay qui est présent par défaut.
Le fichier source est disponible en annexe.

Il nous suffit alors de lancer le programme à l’aide d’une tâche cron à l’heure du réveil.

Sources et Bibliographie

It’s Oversimple, isn’t it?

Attaque sur carte sans contact

Un petit retour sur le workshop de la Nuit du Hack.

La démonstration principale de ce workshop était une attaque sur les cartes sans contact. Celles-ci proposent de payer en sans contact à une distance d’une dizaine de centimètre du lecteur. Ce paiement ne nécessite pas de saisir son code PIN. Il est cependant limité à des transactions d’un montant maximal de 20€ et à 4 transactions consécutives. Après il faut passer en mode contact pour réaliser une transaction.

Description de l’attaque

L’idée est de réaliser un proxy permettant de faire une transaction à distance.

explain

Le téléphone est un téléphone NFC qui permet de réaliser des transactions en sans contact. Celui-ci est relié par un réseau, par exemple un réseau internet, à un lecteur de carte sans contact. Ce lecteur dans le schéma est représenté à droite à coté du personnage en costume. Il est relié à un ordinateur afin de pouvoir être accessible depuis un réseau.

Nous aurions aussi pu utiliser un autre téléphone NFC à la place du couple PC – lecteur sans contact. Cependant je n’avais à ma disposition qu’un seul téléphone NFC.

L’attaque consiste à réaliser un proxy passif afin de réaliser un paiement à l’aide d’une carte qui ne se trouve pas à proximité du lecteur. Puisque la technologie est sans contact, cela peut être réalisé à l’insu de la cible.

Réalisation

Afin de réaliser cette attaque, un téléphone Nexus S a été utilisé. Ce téléphone possède une puce NFC et permet l’installation de l’application simply tap avec une cyanogen mod 9.1. Cette application permet d’avoir accès à l’antenne NFC du téléphone depuis une application android. Le but premier est de réaliser des services de paiement en cloud.

Dans notre cas, au lieu d’interroger un cloud, nous interrogeons un lecteur distant afin de dialoguer directement avec une carte sans contact.

Démonstration :


Attaque par proxy par oversimple

Comment s’en protéger

Pour s’en protéger, c’est assez simple il suffit de mettre sa carte dans un étui en fer. Il existe des portes feuilles blindés qui font très bien l’affaire.

Bibliographie

SimplyTapp NFC Payment System Debuts with CyanogenMod 9.1
emulating pki smart card with cm9.1
NFC Proxy

Nuit du Hack 2k13

ndh

Un petit bilan de la nuit du hack.

Un petit retour sur la Nuit du hack qui vient de se passer. Cette année les confs étaient essentielement en anglais. On peut y voir une volontée de s’ouvrir de plus en plus vers l’étranger.

Le thème du SE est revenu assez fréquement. On a eu comme toujours le droit à notre lot de surprises. Nous avons une petite préference pour les techniques roumaines de fraudes bancaires sur internet.

L’idée est simple, convertir des euro en leu roumain (l’argent roumain) et utiliser les arrondis du troisième digit pour se retouver avec un arrondi supérieur en notre faveur. Ce qui est amusant c’est de voir comment avec ingéniosité il a automatisé les vérifications du code secret qui valide les transactions. Ses automates valent le détour.

Sinon, Julien a présenté un workshop sur le NFC. Le workshop s’est bien déroulé et nous avons pu établir quelques contacts. C’est assez suprenant de voir que les gens s’intéressent autant à la technologie.

Après tout ça on est allé faire un petit tour dans les jardins du parcs avant que les gardes nous demandent de rentrer dans nos hotels. Pour le coup, on ne comprend vraiment pas pourquoi.

DSCF1115

On postera d’autre trucs plus tard sur le workshop et les challenges du wargames mais pour l’instant il est l’heure d’aller se coucher.

Installation du Serveur Apache Tomcat avec Eclipse

Avec Julien, on avait besoin besoin d’un serveur Tomcat pour notre Eclipse.

Pour ça on a besoin :

  • Un Eclipse Java EE (Disponible en téléchargement ici | Choisir Eclipse IDE for Java EE Developers )
  • Un Serveur Apache Tomcat (Disponible en téléchargement ici | Rubrique Download et choisir la version)

On se retrouve donc avec une archive Eclipse Java EE et une archive pour le serveur tomcat.

J’ai effectué l’installation sous Linux mais le principe est identique sous Windows.

On commence par extraire l’archive tomcat dans le repertoire /opt:
Si ZIP :

cd /opt && unzip apache-tomcat-7.0.39.zip

Si TAR.GZ :

 tar xzvf apache-tomcat-7.0.39.tar.gz -C /opt

Attention : Il faut que votre archive soit avec les droits de l’utilisateur et non les droits root. (sinon des problèmes apparaissent avec Eclipse).

On peut configurer notre serveur tomcat mais cela est optionnel pour le fonctionnement avec eclipse.
Cette étape est nécessaire quand on désire le déployer manuellement par exemple.

Le fichier de configuration est :

/opt/apache-tomcat-7.0.39/conf/tomcat-users.xml

J’ai ajouté les informations suivantes (entre les balises tomcat-users :

<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="oversimple" password="oversimple" roles="admin-gui,manager-gui"/>

L’utilisateur est oversimple et son mot de passe est oversimple.

Pour démarrer tomcat il faut exécuter le script bin/startup.sh (ou .bat son Windows) et l’éteindre bin/shutdown.sh.

Après ce petit écart sur la configuration de tomcat, on va configurer notre eclipse.

On décompresse notre archive et puis on exécute le binaire Eclipse.

Une fois notre workspace choisi, il faut configurer pour la première fois notre serveur Tomcat.

Dans Eclipse :

Window > Preferences | Server > Runtime Environments

On ajoute un serveur (add) et on sélectionne un Apache Tomcat vX.0 (cela correspond à la version que vous avez téléchargé précédemment). Après avoir cliqué sur Next on sélectionne notre répertoire apache-tomcat. Dans mon cas : /opt/apache-tomcat-7.0.39

Après on sélectionne la vue Server. (Window > Show View > Other … Server).

On crée un nouveau serveur et on ajoute des projets JEE. Si aucun projet présent, on peut l’ajouter par la suite.

Pour l’ajouter par la suite, on effectue un clic droit sur notre serveur et « Add and Remove… ».

It’s oversimple isn’t it?

L’équipe Bonjour Messieurs gagne le Hackathon du weekend dernier !

Lundi dernier, Nous (Julien et Pierre) sommes allés à Deauville pour la remise des récompenses du hackathon organisé par le conseil général du Calvados, en partenariat avec le Pôle TES et le forum digital.

Nous sommes arrivés le matin afin d’assister au discours d’ouverture, puis nous avons revus les participants du weekend dernier !

Après de longs discours et un peu de blabla pour attendre Monsieur Jean-Léonce Dupont (Sénateur du Calvados et Vice-Président du Sénat, Président du Conseil général du Calvados) qui était en conférence de presse. Une fois Monsieur Jean-Léonce Dupont installé, c’était l’heure du résultat.

A la fin du discours, on a pu avoir le nom de l’application gagnante « Nepture 1944 ». L’équipe qui termine deuxième est « Opération Neptune ».

On est super content, une fois les résultats annoncés on a prévenu le reste de notre équipe (Etienne, Thomas et Paul).

Enfin, on remercie encore l’organisation car c’était un super évènement, l’équipe a beaucoup apprécié! Et encore plus avec le résultat (du bonus 😉 ), Bravo à tous les participants !

Voici des photos récupérées sur le twitter du rondpointnumérique :

Attente du résultat :
Attente du résultat

Remise des récompenses :
Resultat

Interview de la journaliste de Ouest France (Virginie Enée)
journaliste

Et le résultat de l’interview :
ouestfrancehackathonhertz

Source :
Annonce des résultats
#70thBDayHACKATHON