Les solutions anti HADOPI, comment se protéger! (MAJ 28/07/11)
Voilà, la loi HADOPI a été votée et adoptée jeudi 2 avril 2009 à l’Assemblée nationale. 16 de nos députés étaient présents lors du vote à main levée.
Maintenant la loi «Création et Internet» doit passer en commission mixte parlementaire dont l’issue ne fait guère de doute. Puis, elle devra être validée par le conseil constitutionnel.
Quels que soient les ajustements qui seront faits, le texte actuel ne devrait pas trop bouger.
Alors pour nous, Internautes Francais de cette belle République Démocratique de France qu’est ce que cela va changer ?
Entre autre chose, l’obligation de mettre un mouchard (payant!) sur nos ordinateurs !! Oui, oui.. Ce mouchard devra communiquer non stop avec des serveurs de l’HADOPI. Je n’imagine même pas le coût des serveurs qui vont être nécessaires pour supporter cela. Parce que, ce ne sont pas seulement nos petits ordinateurs chez nous, mais aussi des milliers de serveurs, de proxy etc. qui vont devoir être équipés! J’en rigole d’avance... Tout ça pour faire plaisir aux majors...
Bref, ce n’est pas le débat, ni le sujet de cet article. Cette loi stupide et inapplicable aura un coût exorbitant. Mais le gouvernement en a décidé ainsi.
Plus d'informations et de détails sont disponibles sur Numerama par ex.
Au final, quels sont donc les moyens que nous avons à l’heure actuelle pour avoir un peu de tranquillité ?
Je dis bien un peu, car le fonctionnement de l’HADOPI est et reste très obscur. En effet, HADOPI n’aura pas à justifier ces choix pour tenter de faire peur avec ses mails et lettres recommandées. La collecte d’IP (avec une bonne dose de faux positifs) puis la simple suspicion pourront ainsi suffire pour recevoir les avertissements.. ou plus.
Il n'empêche le meilleur moyen actuel pour protéger sa connexion est de la crypter.
Les solutions de VPN privés vont très rapidement devenir légion chez nous! Pour environ 5 à 10 euros par mois, nos connexions pourront rester privées.
Voici une petite liste non exhaustive à tester. Certes, une telle solution aura un impact sur nos débits, mais ce sera peut-être le prix à payer pour notre tranquillité.
The pirate Bay VPN
http://ivacy.com/
http://www.strongvpn.com/
http://vpnprivacy.com/
http://www.linkideo.com/
http://swiss-vpn.net/
http://vpngates.com/
https://www.trueonlinesecurity.com/
http://www.linkideo.com/features
https://www.relakks.com/
Si vous en connaissez d'autres, ou avez déjà pu tester ces derniers, n'hésitez pas à faire part de vos commentaires.
MAJ 12/10/10
https://www.vpntunnel.se/en/index.php : de bonnes critiques et il offre l'avantage de ne faire payer que pour un mois (5€), sans récurrence!
http://www.hidemynet.com/ : de bonnes critiques
MAJ 16/02/11
Un sondage sur lifehacker donne un classement de 5 (bons) VPN selon les sondés
.
MAJ 27/07/11
Ajout d'infos sur les services de type seedbox.
Les meilleurs tweaks cydia utiles pour iPhone jailbreaké
Voici une petite liste (non) exhaustive de quelques petits tweaks pour votre iPhone/iPoad... Bien sur, je parle de tweaks et autres applis.. trouvés sur cydia, donc jailbreak... Je ne parle pas ici des tweaks évidents selon moi, comme sbsetings, lockinfo ou intelliscreenX.. Juste de p'tits trucs qui devraient être déjà intégrés par Apple!
Tous ces tweak sont compatibles iOS 5.0.1 pour le moment, et souvent l'étaient déjà sous iOS 4.x.
Action Menu
Description : Ajoute des actions sur la barre de copier/coller
Author : Ryan Petrich
http://rpetri.ch/cydia/actionmenu/
Activator
Description : Ou comment "vraiment" utiliser le multitouch du device!!
http://rpetri.ch/cydia/activator/
Repo : http://rpetri.ch/repo/
Delete Word
Description : Comme sur un ordi, shift+delete supprime le mot entier
http://moreinfo.thebigboss.org/moreinfo/depiction.php?file=deletewordData
FolderEnhancer (payant)
Description : Quitte à avoir des dossiers dans iOS, autant en avoir des vrais!
http://moreinfo.thebigboss.org/moreinfo/user_depictions/ashikase/jp.ashikase.folderenhancer/
iAppLocker
Description : Permet de protéger par code le lancement d'applis. Pas le meilleur, mais gratuit et simple.
http://modmyi.com/info/iapplocker.php
iPhoneDelivery
Description : iOS 5.. mais toujours pas les accusés de reception pour les sms... délirant!
http//code.google.com/p/iphone-delivery-report/
Repo : http://iphonedelivery.advinux.com/cydia/
ManualCorrect
Description : Change le comportement de l'autocorrection. Il faut taper sur la proposition pour qu'elle s'insère! Tellement plus pratique que de supporter des corrections trop souvent hasardeuses..
http://moreinfo.thebigboss.org/moreinfo/depiction.php?file=manualcorrectData
NCQuickDismiss
Description : Ajoute un bouton pour faire disparaitre les notifications (celles qui apparaissent en haut de l'écran) plus rapidement.
http://moreinfo.thebigboss.org/moreinfo/depiction.php?file=ncquickdismissDp
PreventSleep
Description : Toggle device from entering sleep mode.
http://moreinfo.thebigboss.org/moreinfo/depiction.php?file=preventsleepData
Pull To Dismiss
Description : Faire disparaitre le clavier grace à un glissement vers le bas (très utile dans les mails par ex)
http://moreinfo.thebigboss.org/moreinfo/depiction.php?file=pulltodismissDp
SnoozeOrStop
Description : Quand on est pas bien reveillé le matin.. peu s'avérer utile ![]()
http://moreinfo.thebigboss.org/moreinfo/depiction.php?file=snoozeorstopData
SwipeToMoveCursor
Description : Comme son nom l'indique, un tweak qui permet de se déplacer dans un texte en cours d'écriture via des swipes à gauche ou à droite..
Attention, ce tweak ajoute aussi un tas de raccourcis clavier, comme qqv etc. Voir les commentaires de ce post.
http://hitoriblog.com/depiction/SwipeToMoveCursor.html
Homepage (en Japonais) : http://hitoriblog.com/?p=2327
Repo : http://hitoriblog.com/apt/
SwitcherCleaner
Description : Montre uniquement dans la barre des taches, les applis ouvertes, et ajoute par défaut le bouton pour les fermer!
http://moreinfo.thebigboss.org/moreinfo/depiction.php?file=switchercleanerDp
Les plateformes de téléchargement : Seedbox et direct download.
L'arrivée d'Hadopi et ses emules dans le monde, ont sans doute favorisé l'arrivée d'un nouveau type de service en ligne : Les plateformes de téléchargement.
Ces sociétés mettent à dispo, sous forme d'une application web le plus souvent, le moyen de récupérer tous types de contenus, via des torrents ou du direct download (megaupload, fileserve etc).
Vous donnez le lien ou le fichier torrent, et le service s'occupe du reste pour vous! Bien sur, ces sociétés ont des comptes premiums sur les site de direct download. Donc pas d'attente et gros débit..
Elles conservent ensuite sur le cloud les dits fichiers, afin que l'on puisse les récupérer plus tard, voir même les regarder en streaming pour les fichiers vidéos.
J'ai déjà eu l'occasion d'en tester 3 rapidement :
http://www.streamshark.net/
http://fetch.io
http://put.io/
J'ai une petite préférence pour fetch.io... mais c'est vraiment subjectif ![]()
Tous offrent la possibilité de tester leur service pendant quelques jours, avec en général un quotat de téléchargement et d'espace de stockage limité.
Ensuite, il faut passer à la caisse... et acheter de la bande passante et du stockage. Les prix sont assez similaires d'une plateforme à l'autre. Les tarifs commencent à moins de 5€ par mois! (Le prix d'une pseudo license globale...
)
Et les débits pour ensuite récupérer ses fichiers plus que correct.. ![]()
Cerise sur le gateau, en général, le service se charge également de recoller les morceaux d'un fichier (file.r01, r02... etc)
Ce genre de services, moyennant un petit pécule, peut se rendre très utile.. à garder sous le coude!
Si vous en connaissez d'autres, faites les connaitre en commentaire.
(re)connexion automatique à un VPN sous Ubuntu
En ces temps peu glorieux d'Hadopi et tous ses dérivés... un bon moyen de pouvoir surfer sans être espionné, est d'utiliser un VPN.
Pour ma part, j'ai été confronté à des problèmes de déconnexions intempestives, sans reconnexion automatique. Ce qui peut être parfois gênant...
Voilà donc un (bon) moyen de palier ce problème. Ce n'est surement pas la meilleure solution, et je ne suis pas un fou de linux.. mais au moins, elle me satisfait!
Cette solution se compose de 2 fichiers. Un "check_vpn" qui se charge de lancer le script principal à intervalles définis. Et "vpn_restart.py", script en python qui relance la connexion si celle ci déconnectée.
check_vpn
-
-
while [ 1 ]; do
-
echo -n $(date) "## "
-
sudo /home/bsoft/Bureau/vpn_restart.py #où le script est installé
-
sleep 60 #en secondes, temps de boucle du script
-
done
vpn_restart.py
-
#http://ubuntuforums.org/showthread.php?t=1316314
-
import sys
-
import os
-
import dbus
-
import gobject
-
from dbus.mainloop.glib import DBusGMainLoop
-
-
# The uuid of the VPN connection to activate
-
VPN_CONNECTION_UUID = "20d3d577-51b4-435c-b408-2a3f3c8a5463"
-
-
# The uuid of the connection that needs to be active to start the VPN connection
-
ACTIVE_CONNECTION_UUID = "recupere via get_active_conn(bus)"
-
-
# Mon conn ID
-
CONN_ID = "Auto eth0"
-
# Mon conn['type']
-
CONN_TYPE = "802-3-ethernet"
-
-
# some service, path and interface constants
-
NM_DBUS_SERVICE = "org.freedesktop.NetworkManager"
-
NM_DBUS_PATH = "/org/freedesktop/NetworkManager"
-
NM_DBUS_INTERFACE = "org.freedesktop.NetworkManager"
-
NM_DBUS_IFACE_CONNECTION_ACTIVE = "org.freedesktop.NetworkManager.Connection.Active"
-
NM_DBUS_SERVICE_SYSTEM_SETTINGS = "org.freedesktop.NetworkManagerSystemSettings"
-
NM_DBUS_SERVICE_USER_SETTINGS = "org.freedesktop.NetworkManagerUserSettings"
-
NM_DBUS_IFACE_SETTINGS = "org.freedesktop.NetworkManagerSettings"
-
NM_DBUS_PATH_SETTINGS = "/org/freedesktop/NetworkManagerSettings"
-
NM_DBUS_IFACE_SETTINGS_CONNECTION = "org.freedesktop.NetworkManagerSettings.Connection"
-
-
DBusGMainLoop(set_as_default=True)
-
-
nm_dbus_settings_services = (NM_DBUS_SERVICE_SYSTEM_SETTINGS, NM_DBUS_SERVICE_USER_SETTINGS)
-
-
def get_connections(bus, service):
-
proxy = bus.get_object(service, NM_DBUS_PATH_SETTINGS)
-
iface = dbus.Interface(proxy, dbus_interface=NM_DBUS_IFACE_SETTINGS)
-
return iface.ListConnections()
-
-
def get_connection_by_uuid(bus, uuid):
-
for service in nm_dbus_settings_services:
-
for c in get_connections(bus, service):
-
proxy = bus.get_object(service, c)
-
iface = dbus.Interface(proxy, dbus_interface = NM_DBUS_IFACE_SETTINGS_CONNECTION)
-
settings = iface.GetSettings()
-
if settings['connection']['uuid'] == uuid:
-
return (c, service)
-
return None
-
-
def list_uuids(bus):
-
for service in nm_dbus_settings_services:
-
for c in get_connections(bus, service):
-
proxy = bus.get_object(service, c)
-
iface = dbus.Interface(proxy, dbus_interface=NM_DBUS_IFACE_SETTINGS_CONNECTION)
-
settings = iface.GetSettings()
-
conn = settings['connection']
-
print "%s: %s - %s (%s)" % (service, conn['uuid'], conn['id'], conn['type'])
-
-
# recupere l'uuid de la connexion active via CONN_ID et CONN_TYPE
-
def get_active_conn(bus):
-
for service in nm_dbus_settings_services:
-
for c in get_connections(bus, service):
-
proxy = bus.get_object(service, c)
-
iface = dbus.Interface(proxy, dbus_interface=NM_DBUS_IFACE_SETTINGS_CONNECTION)
-
settings = iface.GetSettings()
-
conn = settings['connection']
-
if conn['id'] == CONN_ID and conn['type'] == CONN_TYPE:
-
return conn['uuid']
-
-
def get_active_connection_path(bus, uuid):
-
proxy = bus.get_object(NM_DBUS_SERVICE, NM_DBUS_PATH)
-
iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.DBus.Properties')
-
active_connections = iface.Get(NM_DBUS_INTERFACE, 'ActiveConnections')
-
connection_and_service = get_connection_by_uuid(bus, uuid)
-
if connection_and_service == None:
-
return None
-
for a in active_connections:
-
proxy = bus.get_object(NM_DBUS_SERVICE, a)
-
iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.DBus.Properties')
-
path = iface.Get(NM_DBUS_IFACE_CONNECTION_ACTIVE, 'Connection')
-
service = iface.Get(NM_DBUS_IFACE_CONNECTION_ACTIVE, 'ServiceName')
-
if service != connection_and_service[1]:
-
continue
-
proxy = bus.get_object(connection_and_service[1], path)
-
iface = dbus.Interface(proxy, dbus_interface=NM_DBUS_IFACE_SETTINGS_CONNECTION)
-
settings = iface.GetSettings()
-
if settings['connection']['uuid'] == uuid:
-
return a
-
return None
-
-
def activate_connection(bus, vpn_connection, active_connection):
-
def reply_handler(opath):
-
print "<<SUCCESS>>"
-
sys.exit(0)
-
def error_handler(*args):
-
print "<<FAILURE>>"
-
sys.exit(1)
-
proxy = bus.get_object(NM_DBUS_SERVICE, NM_DBUS_PATH)
-
iface = dbus.Interface(proxy, dbus_interface=NM_DBUS_INTERFACE)
-
iface.ActivateConnection(NM_DBUS_SERVICE_USER_SETTINGS,
-
vpn_connection[0],
-
dbus.ObjectPath("/"),
-
active_connection,
-
reply_handler=reply_handler,
-
error_handler=error_handler)
-
-
bus = dbus.SystemBus()
-
-
print "connections:"
-
list_uuids(bus)
-
-
ACTIVE_CONNECTION_UUID = get_active_conn(bus)
-
-
if len(VPN_CONNECTION_UUID) < 1 or len(ACTIVE_CONNECTION_UUID) < 1:
-
print "you need to set the uuids"
-
sys.exit(0)
-
-
vpn_connection = get_connection_by_uuid(bus, VPN_CONNECTION_UUID)
-
if not vpn_connection:
-
print "Configured VPN connection is not known to NM, check VPN_CONNECTION_UUID."
-
sys.exit(1)
-
-
active_connection = get_connection_by_uuid(bus, ACTIVE_CONNECTION_UUID)
-
if not active_connection:
-
print "Configured active connection is not known to NM, check ACTIVE_CONNECTION_UUID."
-
sys.exit(1)
-
-
if get_active_connection_path(bus, VPN_CONNECTION_UUID) != None:
-
print "VPN connection already activated"
-
sys.exit(0)
-
-
active_connection_path = get_active_connection_path(bus, ACTIVE_CONNECTION_UUID)
-
if not active_connection_path:
-
print "The required connection isn't active at the moment"
-
sys.exit(0)
-
-
print "connecting to:\n '%s'\nwith active connection:\n '%s'" % (vpn_connection, active_connection)
-
-
activate_connection(bus, vpn_connection, active_connection_path)
-
-
loop = gobject.MainLoop()
-
loop.run()
Le script python peut très facilement être amélioré. On peut imaginer par exemple de fermer certaines applications lorsque la connexion VPN est morte..
Pour faire fonctionner le tout, il suffit de copier le script python où vous voulez.
Puis, de copier en admin (sudo) le script check_vpn dans /etc/init.d
Il faut le rendre exécutable (chmod u+x nom_du_fichier)
Puis il faut créer un lien symbolique du script dans /etc/rc2.d afin que celui ci démarre automatique avec le système.
ln -s /etc/init.d/check_vpn /etc/rc2.d/S88check_vpn
Et voilà!
Chez moi, sous Ubuntu 9.04, ca fonctionne très bien. Il faut bien entendu au préalable avoir une connexion VPN de configurée dans le network manager.
ACTA, ou la censure mondiale d’Internet!!
Après la loi débile Hadopi pour essayer de réguler le piratage (soi disant pour mieux rétribuer Johnny et les potes de Sarko ou de Mme carla..), après bientôt la loi de censure d'internet Loppsi qui sera débattu au parlement début Février (soi disant pour traquer les pédophiles.. On a vu ce que ca donne en Australie)...
Et bien, dans notre dos, à l'insu du plus grand nombre, se trame un projet similaire, mais à l'échelle mondiale!!!
Et au delà des "problèmes" sur le piratage, se pose un vrai débat, celui de la censure mondiale!
Car c'est bien de cela qu'il s'agit! Comment contrôler l'information et surtout sa diffusion. Goebbels l'avait très bien compris il n'y a pas si longtemps.
Internet permet presque de s'affranchir de ces censures, et de diffuser (trop?) rapidement de l'information.. Ce qui n'est pas du goût de tout le monde...
Je vous invite à lire cet article, et si vous voulez en savoir plus, n'hésitez pas à suivre un peu les liens ou faire quelques recherches. Mais surtout, faites circuler l'info!!
http://fr.readwriteweb.com/2010/01/20/a-la-une/traite-acta-censure-loppsi-hadopi/
Tutorial HTML 5 et les bases de données embarquées
HTML5 commence à montrer le bout de son nez. Les navigateurs "modernes" dans leurs versions récentes prennent en charge de plus en plus des nouvelles fonctionnalités prévues.
Attention tout de même, HTML5 n'est qu'un brouillon! Une version "draft" du W3C .
Une des nouvelles fonctionnalités, très pratique pour les applis web et autres sites, est la possibilité de pouvoir embarquer une base de données SQLite directement dans la navigateur du client. Sans qu'il soit nécessaire de gérer une base de données en plus de votre site.
Remarque : concernant les bases de données embarquées, la dernière version de Safari (mobile et desktop) semble être celle qui le gère le mieux.
Une document HTML 5 commence par :
<!doctype html>
La base de données se manipule au sein de balises JavaScript.
-
var db; // variable globale pour manipuler la bdd.
-
-
try {
-
if (window.openDatabase) {
-
db = openDatabase("maBaseDeDonnees", "1.0", "Ex de bdd avec HTML5", 200000);
-
if (!db)
-
alert("Impossible d'ouvrir la bdd. Peut être un problème de version ou alors pas assez de quota d'espace disque disponible pour ce domaine.");
-
} else
-
alert("Impossible d'ouvrir la base de données. Merci d'essayer avec un autre navigateur.");
-
} catch(err) { }
La méthode "openDatabase" comprend 4 arguments :
- Le nom de la base. Ce nom sera aussi la référence pour utiliser la base dans le code.
- La version de la base (optionnelle)
- une description
- La taille estimée de la base en octets. (1024 o = 1 ko!)
Pour requêter la base, nous allons utiliser les "transaction" et la méthode "executeSql" :
La méthode "executeSql" prend au minimum un paramètre, à savoir la requête à exécuter.
-
tx.executeSql("select * from mabase where id=?", [56]);
-
}
Le second paramètre, [56], permet de spécifier des valeurs à passer dans la requête à la place des '?'.
Pour récupérer les résultats de la requête, la méthode executeSql peut recevoir un 3e paramètre :
-
tx.executeSql("select * from matable where id=?", [56], function(tx, resu){}, function(tx,error){});
-
}
Le 4e paramètre permet quant à lui de gérer les erreurs.
La variable "resu" du 3e paramètre est un objet de type SQLResultSet qui permet ensuite d'accéder aux résultats de la requête.
Par exemple :
-
var row = resu.rows.item(i);
-
// row.id, row.nom etc..
-
}
Exemple de création d'une table :
-
tx.executeSql("CREATE TABLE IF NOT EXISTS matable (id INTEGER PRIMARY KEY, nom TEXT, age NUMERIC)", [],
-
function(tx, rs) {},
-
function(tx, error) {
-
alert("Impossible de créer la table : " + error.message);
-
return;
-
}
-
);
-
});
Insertion de données :
-
tx.executeSql("INSERT INTO TABLE IF NOT EXISTS matable (nom, age) values (?,?)", ['Internet Explorer',72],
-
function(tx, rs) {},
-
function(tx, error) {
-
alert("Impossible d'ajouter des données : " + error.message);
-
return;
-
}
-
);
-
});
Recherche de données :
-
tx.executeSql("select * from matable where age = ?", [72],
-
function(tx, rs) {
-
// on travaille sur les résultats
-
if (!rs.rows.length) {
-
// Aucune ligne retournée
-
alert('aucun résultat');
-
}
-
else {
-
// je triche, on ne récupère ici que le 1er résultat. En même temps, c'est le seul

-
var row = rs.rows.item(0);
-
var lenom = row['nom'];
-
var idnom = row['id'];
-
}
-
},
-
function(tx, error) {
-
alert("Problème d'accès aux données : " + error.message);
-
return;
-
}
-
);
-
});
Voilà, bref aperçu de comment embarquer rapidement et facilement une base de données dans son application web sans devoir installer quoique ce soit sur son serveur.
La seule limitation actuelle est le (non) support par certains navigateurs. Mais cela va très rapidement changer!
Tutoriel : comment générer une PHPDoc avec Eclipse
Exemple avec WAMP server sous Windows.
Il faut au préalable installer le paquet PEAR PHPDocumentor à votre PHP.
(ex d’installation PEAR avec WAMP server)
Retourner dans Eclipse, puis cliquer dans le menu sur : Run/External Tools/External Tools Configurations
Sélectionner "Program" puis créer un nouveau.
Dans la fenêtre qui s'ouvre, lui donner un nom (nom de votre phpDoc).
Dans "Location" il faut indiquer le chemin de l'exe de PHP5.
Puis dans argument :
"C:\wamp\bin\php\php5.2.9\PEAR\PhpDocumentor\phpDocumentor\phpdoc.inc" -t ${project_loc}/CHEMIN_OU_GENERER_LA_DOC -o HTML:Smarty
HP -d ${project_loc}
C:\wamp\bin\php\php5.2.9\PEAR\PhpDocumentor\phpDocumentor\phpdoc.inc = chemin du fichier de conf de la PHPDoc (ne pas omettre les guillements).
D'autres options peuvent être ajoutées (descriptif ici) à la suite des arguments.
Par ex : "-i test.php" pour ignorer le fichier test.php
Aussi "-pp" pour que la doc décrive aussi les méthodes privées.
Ce qui donne comme argument final par ex:
"C:\wamp\bin\php\php5.2.9\PEAR\PhpDocumentor\phpDocumentor\phpdoc.inc" -t ${project_loc}/SPIdoc -o HTML:Smarty
HP -d ${project_loc} -i test.php -pp
Ensuite, pour générer la PHPDoc du projet en cours, il suffit de cliquer dans le menu sur Run/External Tools/Nom de votre phpDoc.

