Soutenir Vision du Web dans son partage de logiciels et de ressources libres

Ce mineur crée de la monnaie numérique Monero pour soutenir Vision du web.
Merci de désactiver votre bloqueur de publicité.
Aucune publicité ne sera affichée.
Le mineur utilise les ressources de votre machine pour créer gratuitement de la monnaie numérique.
Le montant des donations pour Vision du web est de 0.065996725438753 Monero.

Utiliser python

De Wiki. Analyse, Communication, Développement, Hacking.
Aller à : navigation, rechercher
Naviguer sur le site : Accueil du site - Les annuaires - Les éditoriaux - Le forum - Les outils - Les projets
 
Consulter le contenu en étant déconnecté du réseau : Exporter le sommaire de cette page vers un document PDF

Installer Python

Ok-ko.png Installer Python : https://www.digitalocean.com/community/tutorials/how-to-install-the-django-web-framework-on-ubuntu-14-04

Outil de développement pour Python

Pycharm, gratuit dans la version Community Edition : https://www.jetbrains.com/pycharm/
Pyscripter : https://sourceforge.net/projects/pyscripter/files/
Emacs : https://www.emacswiki.org/emacs/PythonProgrammingInEmacs

Utiliser Python

Ok-ko.png Apprendre à programmer avec python : https://python.developpez.com/cours/TutoSwinnen/?page=page_6
Ok-ko.png Démarrer un programme en tant que service - démon : http://www.commentcamarche.net/faq/6858-demarrer-un-programme-en-tant-que-service-demon

Challenge de Connexion Web avec Python

L'authentification est un aspect critique de la sécurité sur le web.
Se documenter sur l'authentification sur le web avec des sessions.
Se documenter sur les mots clés «hacking» «session» «cookie» «sniffer».
01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100 est un site de challenges et d'expérimentation.
Le challenge : https://www.01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100.org/index.php?page=epreuve&no=134

Le cookie de connexion

Cookie retourné depuis le navigateur

Cookie créé lors de la connexion depuis la page de connexion.
Sniffer les Cookies avec les outils suivants : Navigateurs_pour_GNU_Linux#Cookies
Host: www.01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100.org
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Referer: https://www.01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100.org/forums/index.php?action=login2
Content-Type: application/x-www-form-urlencoded
Content-Length: 93
Cookie: PHPSESSID=cfef87d4ff0...fb71703789cc; _pk_id.1.8804=b0b3b...43d84.1530436988.3.1530453775.1530453775.; _pk_ref.1.8804=%5B%22%2...53775%2C%22https%3A%2F%2Fwww.visionduweb.eu%2Fwiki%2Findex.php%3Ftitle%3DUtiliser_python%22%5D; _pk_ses.1.8804=*
Connection: keep-alive
Upgrade-Insecure-Requests: 1
user=...
POST: HTTP/1.1 200 OK
Date: Sun, 01 Jul 2018 14:03:05 GMT
Server: Apache
X-Powered-By: PHP/5.4.45-0+deb7u5
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: private
Pragma: no-cache
Set-Cookie: SMFCookie89=a%3A4%3A%7Bi%3A0%3Bs%3A5%3A%2276012%2...2099ebb12a50dbe93f95%22%3Bi%3A2%3Bi%3A1530457385%3Bi%3A3%3Bi%3A0%3B%7D; expires=Sun, 01-Jul-2018 15:03:05 GMT; path=/
PHPSESSID=c098b4c6845...47abf1d892a761; path=/
PHPSESSID=c098b4c6845...47abf1d892a761; expires=Sun, 01-Jul-2018 15:03:05 GMT; path=/
Location: https://www.01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100.org/forums/index.php?action=login2;sa=check;member=76012
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 20
Keep-Alive: timeout=15, max=99
Connection: Keep-Alive
Content-Type: text/html

Le script pour se connecter au site

En python

#!/usr/bin/python
# -*- coding: utf-8 -*-
import cookielib, urllib, urllib2

login = 'LE LOGIN'
password = 'LE MOT DE PASSE'

# On active le support des cookies pour urllib2
cookiejar = cookielib.CookieJar()
urlOpener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))

# On envoie le login et le password à la première page du site qui nous renvoie un cookie de session
values = {'user':login, 'passwrd':password}
data = urllib.urlencode(values)
request = urllib2.Request("https://www.01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100.org/forums/index.php?action=login2", data)
url = urlOpener.open(request)  # Notre cookiejar reçoit automatiquement les cookies
page = url.read(500000)

# Affecter les valeurs du cookie à une variable.
# CookieName = [cookie.name for cookie in cookiejar]
# CookieValue = [cookie.value for cookie in cookiejar]
# Afficher les valeurs des variables cookie pour voir si il existe.
# print CookieName
# print CookieValue

# On fait une nouvelle requête sur la deuxième page du site avec le cookie de session qui a été récupéré lors de l'écoute des cookies lors du passage de la première à la deuxième page depuis un navigateur web.
url = urlOpener.open('http://www.01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100.org/epreuves/prog/prog1.php')

# Renseigner le header avec la valeur du cookie observé pour SMFCookie89 pour pouvoir lire la deuxième page
headers = {'Cookie: SMFCookie89=a%3A4%3A%7Bi%3A0%3Bs%3A5%3A%2255733%22%3Bi...%22%3Bi%3A2%3Bi%3A1612301728%3Bi%3A3%3Bi%3A0%3B%7D'}
page = url.read(200000)
print page

# Parser la réponse obtenue sur la deuxième page
nombre = page.replace('Le nombre aléatoire pour valider ta réponse est : ',)

# Stocker la réponse pour être sur qu'on l'ait bien récupérée.
# fichier = open("data.txt", "a")
# fichier.write(nombre)
# fichier.close()

# Concaténer le nombre de la réponse à l'url suivante pour valider la réponse.
# https://www.01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100.org/epreuves/prog/verifpr1.php?solution=nombre
resolu = "https://www.01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100.org/epreuves/prog/verifpr1.php?solution="+str(nombre)
print resolu

## Consulter l'adresse URL pour valider la réponse.
validation = urlOpener.open(resolu)
validation = validation.read(100000)
print validation

Un message s'affiche à l'écran pour valider le challenge :
# ['838fa4cdea5d...3145a98f20df9ee', 'a%3A4%3A%7Bi%3A0%3Bs%3A5%3A%2255733%22%3Bi...%22%3Bi%3A2%3Bi%3A1612301728%3Bi%3A3%3Bi%3A0%3B%7D']
 # Le nombre aléatoire pour valider ta réponse est : 27....115
 # https://www.01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100.org/epreuves/prog/verifpr1.php?solution=27....115
 # <h3 align="center">Bravo, tu as réussi l'épreuve !</h3><br /><p>Pour valider l'épreuve, le mot de passe est : ******
# Utiliser un navigateur pour aller sur votre compte, dans la partie Challenge, pour valider l'épreuve Renvoi en saisissant le mot de passe reçu dans le terminal.

En python - Variante

Au lieu d'appeler directement la fonction, on lui créé un contexte d'exécution en définissant un cookie :
$context = stream_context_create(array("http" => array ("header" => "Cookie: nomcookie=valeurcookie\r\n"))) ;
echo file_get_contents("http://www.01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100.org/epreuves/prog/prog1.php", false, $context) ;
Mise en application :
$context = stream_context_create(array("http" => array ("header" => "Cookie: SMFCookie89=a%3A4%3A%7Bi%3A0%3Bs%3A5%3A%2255733%22%3Bi...c9d541%22%3Bi%3A2%3Bi%3A1612301728%3Bi%3A3%3Bi%3A0%3B%7D\r\n"))) ;
$retour = file_get_contents("http://www.01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100.org/epreuves/prog/prog1.php", false, $context) ;
$k = preg_split("/ /", $retour);
// var_dump($keywords[stri]);
echo file_get_contents('http://www.01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100.org/epreuves/prog/verifpr1.php?solution='.$k[9], false, $context);
Source : https://github.com/ZerooCool/01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100/blob/master/programmation/Renvoi/epRenvoi.php
Fork de https://github.com/floriancourgey/01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100

En PHP

# Exemple. Alternative en PHP mais il faut encore renvoyer le cookie en entier. Identifier le cookie avec un sniffer.
$url = 'http://www.01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100.org/epreuves/prog/prog1.php';
$agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6';
$id = 'PHPSESSID=bb2e5b0c1801158d33295**********; path=/';
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 4);   
curl_setopt($ch, CURLOPT_COOKIE, $id);

$ret = curl_exec($ch);
if (curl_errno($ch))
{
   print curl_error($ch);
   return false;
}
echo $ret;
print_r($_COOKIE);
curl_close($ch);
# Autre exemple avec PHP Lib cURL.
$c = curl_init("http://www.01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100.org/epreuves/prog/prog1.php") ;
curl_setopt($c, CURLOPT_COOKIE, "cookie=value") ;
echo curl_exec ($c) ;
curl_close($c) ;
# En Perl avec LWP.
#!/usr/bin/perl
# Create a user agent object
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$ua->agent("MyApp/0.1 ");
$h = HTTP::Headers->new;

$h->header('Cookie' => 'MonCookie=MaValeur;SecondCookie=myVal2');

# Create a request
my $req = HTTP::Request->new(GET => 'http://www.techniques-ingenieur.fr/test.asp',$h);

# Pass request to the user agent and get a response back
my $res = $ua->request($req);

# Check the outcome of the response
if ($res->is_success) {
  print $res->content;
}

La discussion sur ce challenge

La page Modification SMF nous informe : Si vous recherchiez la solution de facilité, et passiez le PHPSESSID en GET dans l'URL, bah raté, ça marche plus.
Source : https://www.01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100.org/forums/index.php?topic=2359.0
Il faut recréer le même contexte qu'avec un navigateur. Comprendre comment un navigateur se connecte à un serveur et quelles sont les données techniques échangées.
Observer quelque chose qui fonctionne déjà comme la connexion avec son propre navigateur par exemple.
Reproduisant en observant le comportement de la connexion.
Source : https://www.01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100.org/forums/index.php?topic=20.150
Lecture complémentaires : Apprendre à créer un cookie. Savoir créer un entête user agent.
https://www.01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100.org/forums/index.php?topic=2354.0
Source : https://www.01001110011001010111011101100010011010010110010101100011011011110110111001110100011001010111001101110100.org/forums/index.php?topic=20.90

Interface graphique en TCL/TK

Source : http://daniel.roche.free.fr/article_tcl/article.html
Source : https://www.developpez.net/forums/d1515474/dotnet/langages/interface-graphique-tcl-tk/
Source : http://sebsauvage.net/python/gui/index_fr.html
Source : https://docs.python.org/fr/3/library/tk.html

Autres types d'interface graphique

Source : https://python-guide-pt-br.readthedocs.io/fr/latest/scenarios/gui.html

Requête http asynchrone en Python

Source : https://terriblecode.com/blog/asynchronous-http-requests-in-python/

Tester aya

dpkg -i aya.deb

Django

Ok-ko.png Forum officiel : http://forum.django-fr.org
Ok-ko.png Apprendre Python - Django introduction : http://apprendre-python.com/page-django-introduction-python
Ok-ko.png Apprendre Python - Django : https://docs.djangoproject.com/en/1.10/intro/tutorial01/
Ok-ko.png Tutoriel Django : https://app.box.com/shared/pl4xlarirl
Ok-ko.png Tutoriel Django : https://python.developpez.com/tutoriels/reseau-web/apprendre-framework-django/

Compiler

Compiler avec python et cx freeze.

Simple DRY Tabs using Django 1.3

https://djangosnippets.org/snippets/2421/

Bibliographie

Technical articles Django, Python, Linux, PHP, Web, Open Source par James Pic : http://blog.yourlabs.org
Apprendre la programmation Python : https://python.developpez.com/tutoriels/apprendre-programmation-python/les-bases/?page=ordinateur-et-programmation

NAVIGATION

PARTICIPER ET PARTAGER

Vous êtes sur le wiki de Vision du Web.
Les pages présentées sur le wiki évoluent tous les jours.
Certaines recherches sont peu abouties et incluent des erreurs.
Pour participer sur le wiki, créer un compte utilisateur en haut à droite.
La recherche interne du wiki permet de trouver le contenu qui vous intéresse.
Identifiez-vous pour poser vos questions sur la page de discussion de VisionDuWeb.
Améliorer le contenu des pages en faisant des propositions depuis l'onglet discussion.
Pour écrire en Markdown : Éditeur - Générateur de tableau 1 - Générateur de tableau 2.
Les informations du wiki ne doivent pas servir à nuire à autrui ou à un système informatique.
De nombreux outils gratuits sont listés et disponibles dans la boîte à outils de Vision du web.
D'autres pages du wiki peuvent correspondre à vos attentes. La liste de toutes les pages du wiki.

VALORISER LE WIKI

Valoriser le contenu partagé sur le wiki avec un don en monnaie numérique :
Bitcoins (BTC) - Bitcoins Cash - Bitcoins Gold - Bitcore (BTX) - Blackcoins - Bytecoins - Clams - Dash - Monero - Dogecoins - Ethereum - Ethereum Classique - Litecoins - Potcoins - Solarcoins - Zcash

OBTENIR DE LA MONNAIE NUMERIQUE

Obtenir gratuitement de la monnaie numérique :
Gagner des Altcoins - Miner des Altcoins.