Accueil > > > STEGBMP (STEGANOGRAPHIE)
STEGBMP (STEGANOGRAPHIE)
Information sur la source
Description
Salut à tous,
je vous propose un add-on de stéganographie, c'est à dire un add-on permettant de masquer des fichiers à l'interieur de fichiers bitmap (.bmp)
Il est possible de masquer n'importe quel type de fichier, bien evidemmement, plus il sera lourd, plus ce sera long, et plus l'image sera "alterée"
En deux mot, le principe repose sur le masquage d'informations en remplaçant les bits de poids faibles des pixels d'une image par les bits du document a masquer: L'image reste lisible, malqué un déterioration plus ou moins visible dûe a la substitution de bits
Vous pouvez masquer des fichiers jusqua 1Mo (0,99 pour être précis) mais un conseil, n'allez pas au dessus de 100ko, n'oubliez que le mirc, c'est lent ;-)
J'ai copié le code ci dessous mais il vaut mieux telecharger le zip qui contient l'aide, masqué dans l'image exemple.bmp
[code édité deux fois]
Source
- ;;;;;;;;;;;;;;;;;;;
- ;stegBMP v1 ;
- ;fjxokt ;
- ;fjxokt@gmail.com ;
- ;;;;;;;;;;;;;;;;;;;
-
-
- on *:load:{
- if $version < 6.12 { echo -a Version de mirc trop ancienne. L'add-on ne peut être installé | halt }
- if (!$isdir($dire(rec))) mkdir $q($dire(rec))
- if (!$isdir($dire(por))) mkdir $q($dire(por))
- echo -a stegBMP installé ! Tapez /stegBMP pour l'utiliser
- }
-
- on *:unload:{
- if ($input(Voulez-vous supprimer les dossiers par défaut contenant les images porteuses et les fichiers récupérés ?,iy,Déchargement de l'add-on...)) {
- .echo -q $findfile($dire(rec),*,0,.remove $q($1-))
- .echo -q $findfile($dire(por),*,0,.remove $q($1-))
- rmdir $q($dire(rec))
- rmdir $q($dire(por))
- }
- }
-
-
- ;#DIALOG ET EVENT
-
-
- dialog steg_dial {
- title "StegBMP v1"
- size -1 -1 264 185
- option dbu
- box "Demasquage", 1, 126 5 118 36
- box "Masquage", 2, 3 59 119 110
- text "Chemin vers l'image support :", 3, 9 68 71 9
- button "...", 4, 9 78 13 9
- edit "", 5, 29 77 85 11, autohs
- edit "", 6, 154 25 85 11, autohs
- button "...", 7, 131 26 13 9
- text "Chemin vers l'image support", 8, 131 15 71 9
- text "Chemin vers le fichier à masquer :", 9, 9 91 82 8
- button "...", 10, 9 101 13 9
- edit "", 11, 29 100 86 11, autohs
- button "&OK", 14, 182 46 29 11
- button "Fermer", 15, 215 46 29 11, cancel
- text "Codage sur ", 16, 9 117 29 8
- combo 17, 40 115 20 40, size drop
- text "bit par octet", 18, 63 117 41 8
- button "Masquer", 19, 16 21 37 12, flat
- button "Demasquer", 20, 71 21 37 12, flat
- button "&GO", 21, 59 172 29 11
- button "Fermer", 22, 93 172 29 11, cancel
- text "Choisissez l'option à effectuer", 23, 16 8 100 10
- edit "", 24, 16 41 92 10, read
- text "Nom du fichier de sortie :", 12, 9 144 82 8
- edit "", 13, 9 153 86 11
- text "Ecrire tous les", 25, 9 131 36 8
- combo 26, 46 129 20 50, size edit drop limit 2
- text "octets", 27, 69 131 19 10
- }
-
- on 1:dialog:steg_dial:*:*:{
- if ($devent == init) { did -ca $dname 17 1 | didtok $dname 17 32 2 4 | did -ca $dname 26 12 | didtok $dname 26 32 3 6 9 }
- elseif ($devent == sclick) {
- if ($did isin 4710) stegano.sel $did
- elseif ($did == 19) stegano_dial.hide
- elseif ($did == 20) stegano_dial.read
- elseif ($did == 14) stegano.read
- elseif ($did == 21) stegano.hide
- elseif ($did == 17) did -ra $dname 18 $+(bit,$iif($did(17) != 1,s)) par octet
- }
- }
-
-
- ;#ALIAS ECRITURE FICHIER
-
-
- alias -l stegano.hide {
- var %ticks $ticks , %d steg_dial , %fs $d(13) , %fm $d(11) , %bo $d(17) , %dec $d(26)
-
- if (!%fs || !%fm || !%dec) { print Tous les champs doivent être remplis | halt }
- elseif (%dec < 3) { print Espace d'ecriture minimum = 3 | halt }
- elseif (!$regex($d(5),(\.bmp)$)) { print L'image n'est pas du format BITMAP | return }
- elseif (!$bpp($d(5))) { print L'image doit être en 24 bits/pixel | halt }
- elseif ($file($d(5)) < $stegano.len) { print Taille necessaire: $v2 octets ! | halt }
-
- .copy $q($d(5)) %fs
- set %seek 55
- print Ecriture du header...
-
- ;signature
- $_write(%fs,%seek,FjX,1)
- ;bits/octet
- $_write(%fs,%seek,%bo,1)
- ;decalage octet/pixel
- $_write(%fs,%seek,$base(%dec,10,10,2),1)
- ;taille nom fichier
- $_write(%fs,%seek,$base($len($nopath(%fm)),10,10,2),1)
- ;nom fichier
- $_write(%fs,%seek,$nopath(%fm),1)
- ;taille fichier
- $_write(%fs,%seek,$base($file(%fm),10,10,7),1)
- ;fichier
- $_write(%fs,%fm,%bo,%dec).file
-
- var %ù = $+(",$dire,%fs,") | if ($exists(%ù)) .remove %ù | .rename %fs %ù
- run $dire
- unset %seek
- print Masquage terminé en $tps(%ticks)
- }
-
- alias -l _write {
- if ($prop == file) {
- ;syntaxe $_write_file(fichier_source,fichier_secret,bits/octet,decalage)
-
- var %fs $q($1) , %fm $q($2)
- bread %fs 0 $file(%fs) &fs
- bread %fm 0 $file(%fm) &fm
- var %deb 1 , %max $bvar(&fm,0) , %pos 0
- while (%deb <= %max) {
- print $str(l,$ceil($calc(%deb * 86 / %max)))
- var %bin = $base($bvar(&fm,%deb,1),10,2,8) , %i 1
- while (%i < 9) {
- bset &bin 1 $base($+($left($base($bvar(&fs,$calc(%seek + %pos),1),10,2,8),$calc(8 - $3)),$mid(%bin,%i,$3)),2,10)
- bwrite %fs $calc(%seek + %pos -1) 1 &bin
- inc %pos $4
- inc %i $3
- }
- inc %deb
- }
- inc %seek %pos
- }
- else {
- ;syntaxe $_write(fichier,position,texte,bits/octet)
-
- bread $1-2 $file($1) &data
- var %deb 1 , %max $len($3) , %pos 0
- while (%deb <= %max) {
- var %bin = $base($asc($mid($3,%deb,1)),10,2,8) , %i 1
- while (%i < 9) {
- bset &bin 1 $base($+($left($base($bvar(&data,$calc($2 + %pos),1),10,2,8),$calc(8 - $4)),$mid(%bin,%i,$4)),2,10)
- bwrite $1 $calc($2 + %pos) 1 &bin
- inc %seek
- inc %pos
- inc %i $4
- }
- inc %deb
- }
- print fin d'ecriture de : $3
- }
- }
-
-
- ;#ALIAS RECUPERATION FICHIER
-
-
- alias -l stegano.read {
- var %f $q($d(6)) , %infos $_read(%f,55,500,1) , %ticks $ticks
- if (!$regex(%infos,^FjX)) { print Erreur: Fichier non steganographié! | return }
- var %bo $mid(%infos,4,1) , %dec $mid(%infos,5,2) , %fname $mid(%infos,9,$mid(%infos,7,2)) , %taille $mid(%infos,$calc(9 + $len(%fname)),7)
- .fopen -o f $+(",$dire(rec),%fname,")
- var %i $calc(118 + 56 + 8 * $len(%fname)) , %max $calc(%i + %taille * (8 / %bo) * %dec)
- while (%i < %max) {
- print $str(l,$ceil($calc(%i * 86 / %max)))
- bset &b 1 $iif($_read(%f,%i,$calc(8 * (%dec / %bo)),%bo,%dec).bin,$v1,0)
- .fwrite -b f &b
- inc %i $calc((8 / %bo) * %dec)
- }
- run $nofile($fopen(f).fname)
- .fclose f
- print Récupération effectuée en $tps(%ticks)
- }
-
- alias -l _read {
- ;syntaxe $_read(fichier,debut_lecture,fin_lecture,bits/octet,decalage)
-
- bread $1-3 &data
- var %i $2 , %max $calc($2 + $3) , %p 1
- while (%i <= %max) {
- var %data = %data $+ $right($base($bvar(&data,%p,1),10,2,8),$4)
- if ($len(%data) == 8) { var %final %final $+ $chr($base(%data,2,10)) | unset %data }
- inc %p $5
- inc %i $4
- }
- return $iif($prop == bin,$asc(%final),%final)
- }
-
-
- ;#ALIAS DIVERS
-
-
- alias stegBMP { if !$dialog(steg_dial) { dialog -m steg_dial steg_dial | dialog -bs steg_dial -1 -1 124 59 } }
-
- alias dire return $+($scriptdir,fichiers $iif($1 == rec,récupérés,porteurs),\)
- alias -l tps return $duration($calc(($ticks - $1) / 1000)))
- alias -l print did -ra steg_dial 24 $1-
- alias -l q return $+(",$$1-,")
- alias -l d return $did(steg_dial,$1)
- alias -l bpp { bread $q($1-) 28 1 &bpp | if ($bvar(&bpp,1,1) != 24) return 0 | return 1 }
-
- alias -l stegano.len {
- var %d steg_dial
- return $calc(($file($did(%d,11)) * (8 / $did(%d,17))) * $did(%d,26) + 110 + 56 + (8 * $len($nopath($did(%d,11)))))
- }
-
- alias -l stegano_dial.hide {
- var %d steg_dial
- if ($dialog(%d).w > 350) { var %i 130 | while (%i >= 0) { dialog -bs %d -1 -1 $calc(125 + %i) 59 | dec %i } }
- var %i 1 | while (%i <= 135 ) { dialog -bs %d -1 -1 124 $calc(50 + %i) | inc %i } | did -b %d 19 | did -e %d 20
- }
-
- alias -l stegano_dial.read {
- var %d steg_dial
- if ($dialog(%d).h > 200) { var %i 134 | while (%i >= 0) { dialog -bs %d -1 -1 124 $calc(58 + %i) | dec %i } }
- var %i 1 | while (%i <= 131) { dialog -bs %d -1 -1 $calc(115 + %i) 59 | inc %i } | did -b %d 20 | did -e %d 19
- }
-
- alias -l stegano.sel {
- var %d did -ra steg_dial
- if ($1 == 4) { var %p $$sfile($+($scriptdir,:\*.bmp),Selectionnez l'image support,Selectionner) | %d 5 %p | %d 13 $instok($nopath(%p),STEG,-1,46) }
- elseif ($1 == 7) { var %f $q($dire) | %d 6 $$sfile( %f \*.bmp,Selectionnez l'image support,Selectionner) }
- elseif ($1 == 10) %d 11 $$sfile($scriptdir \*.*,Selectionnez le fichier à masquer,Selectionner)
- }
;;;;;;;;;;;;;;;;;;;
;stegBMP v1 ;
;fjxokt ;
;fjxokt@gmail.com ;
;;;;;;;;;;;;;;;;;;;
on *:load:{
if $version < 6.12 { echo -a Version de mirc trop ancienne. L'add-on ne peut être installé | halt }
if (!$isdir($dire(rec))) mkdir $q($dire(rec))
if (!$isdir($dire(por))) mkdir $q($dire(por))
echo -a stegBMP installé ! Tapez /stegBMP pour l'utiliser
}
on *:unload:{
if ($input(Voulez-vous supprimer les dossiers par défaut contenant les images porteuses et les fichiers récupérés ?,iy,Déchargement de l'add-on...)) {
.echo -q $findfile($dire(rec),*,0,.remove $q($1-))
.echo -q $findfile($dire(por),*,0,.remove $q($1-))
rmdir $q($dire(rec))
rmdir $q($dire(por))
}
}
;#DIALOG ET EVENT
dialog steg_dial {
title "StegBMP v1"
size -1 -1 264 185
option dbu
box "Demasquage", 1, 126 5 118 36
box "Masquage", 2, 3 59 119 110
text "Chemin vers l'image support :", 3, 9 68 71 9
button "...", 4, 9 78 13 9
edit "", 5, 29 77 85 11, autohs
edit "", 6, 154 25 85 11, autohs
button "...", 7, 131 26 13 9
text "Chemin vers l'image support", 8, 131 15 71 9
text "Chemin vers le fichier à masquer :", 9, 9 91 82 8
button "...", 10, 9 101 13 9
edit "", 11, 29 100 86 11, autohs
button "&OK", 14, 182 46 29 11
button "Fermer", 15, 215 46 29 11, cancel
text "Codage sur ", 16, 9 117 29 8
combo 17, 40 115 20 40, size drop
text "bit par octet", 18, 63 117 41 8
button "Masquer", 19, 16 21 37 12, flat
button "Demasquer", 20, 71 21 37 12, flat
button "&GO", 21, 59 172 29 11
button "Fermer", 22, 93 172 29 11, cancel
text "Choisissez l'option à effectuer", 23, 16 8 100 10
edit "", 24, 16 41 92 10, read
text "Nom du fichier de sortie :", 12, 9 144 82 8
edit "", 13, 9 153 86 11
text "Ecrire tous les", 25, 9 131 36 8
combo 26, 46 129 20 50, size edit drop limit 2
text "octets", 27, 69 131 19 10
}
on 1:dialog:steg_dial:*:*:{
if ($devent == init) { did -ca $dname 17 1 | didtok $dname 17 32 2 4 | did -ca $dname 26 12 | didtok $dname 26 32 3 6 9 }
elseif ($devent == sclick) {
if ($did isin 4710) stegano.sel $did
elseif ($did == 19) stegano_dial.hide
elseif ($did == 20) stegano_dial.read
elseif ($did == 14) stegano.read
elseif ($did == 21) stegano.hide
elseif ($did == 17) did -ra $dname 18 $+(bit,$iif($did(17) != 1,s)) par octet
}
}
;#ALIAS ECRITURE FICHIER
alias -l stegano.hide {
var %ticks $ticks , %d steg_dial , %fs $d(13) , %fm $d(11) , %bo $d(17) , %dec $d(26)
if (!%fs || !%fm || !%dec) { print Tous les champs doivent être remplis | halt }
elseif (%dec < 3) { print Espace d'ecriture minimum = 3 | halt }
elseif (!$regex($d(5),(\.bmp)$)) { print L'image n'est pas du format BITMAP | return }
elseif (!$bpp($d(5))) { print L'image doit être en 24 bits/pixel | halt }
elseif ($file($d(5)) < $stegano.len) { print Taille necessaire: $v2 octets ! | halt }
.copy $q($d(5)) %fs
set %seek 55
print Ecriture du header...
;signature
$_write(%fs,%seek,FjX,1)
;bits/octet
$_write(%fs,%seek,%bo,1)
;decalage octet/pixel
$_write(%fs,%seek,$base(%dec,10,10,2),1)
;taille nom fichier
$_write(%fs,%seek,$base($len($nopath(%fm)),10,10,2),1)
;nom fichier
$_write(%fs,%seek,$nopath(%fm),1)
;taille fichier
$_write(%fs,%seek,$base($file(%fm),10,10,7),1)
;fichier
$_write(%fs,%fm,%bo,%dec).file
var %ù = $+(",$dire,%fs,") | if ($exists(%ù)) .remove %ù | .rename %fs %ù
run $dire
unset %seek
print Masquage terminé en $tps(%ticks)
}
alias -l _write {
if ($prop == file) {
;syntaxe $_write_file(fichier_source,fichier_secret,bits/octet,decalage)
var %fs $q($1) , %fm $q($2)
bread %fs 0 $file(%fs) &fs
bread %fm 0 $file(%fm) &fm
var %deb 1 , %max $bvar(&fm,0) , %pos 0
while (%deb <= %max) {
print $str(l,$ceil($calc(%deb * 86 / %max)))
var %bin = $base($bvar(&fm,%deb,1),10,2,8) , %i 1
while (%i < 9) {
bset &bin 1 $base($+($left($base($bvar(&fs,$calc(%seek + %pos),1),10,2,8),$calc(8 - $3)),$mid(%bin,%i,$3)),2,10)
bwrite %fs $calc(%seek + %pos -1) 1 &bin
inc %pos $4
inc %i $3
}
inc %deb
}
inc %seek %pos
}
else {
;syntaxe $_write(fichier,position,texte,bits/octet)
bread $1-2 $file($1) &data
var %deb 1 , %max $len($3) , %pos 0
while (%deb <= %max) {
var %bin = $base($asc($mid($3,%deb,1)),10,2,8) , %i 1
while (%i < 9) {
bset &bin 1 $base($+($left($base($bvar(&data,$calc($2 + %pos),1),10,2,8),$calc(8 - $4)),$mid(%bin,%i,$4)),2,10)
bwrite $1 $calc($2 + %pos) 1 &bin
inc %seek
inc %pos
inc %i $4
}
inc %deb
}
print fin d'ecriture de : $3
}
}
;#ALIAS RECUPERATION FICHIER
alias -l stegano.read {
var %f $q($d(6)) , %infos $_read(%f,55,500,1) , %ticks $ticks
if (!$regex(%infos,^FjX)) { print Erreur: Fichier non steganographié! | return }
var %bo $mid(%infos,4,1) , %dec $mid(%infos,5,2) , %fname $mid(%infos,9,$mid(%infos,7,2)) , %taille $mid(%infos,$calc(9 + $len(%fname)),7)
.fopen -o f $+(",$dire(rec),%fname,")
var %i $calc(118 + 56 + 8 * $len(%fname)) , %max $calc(%i + %taille * (8 / %bo) * %dec)
while (%i < %max) {
print $str(l,$ceil($calc(%i * 86 / %max)))
bset &b 1 $iif($_read(%f,%i,$calc(8 * (%dec / %bo)),%bo,%dec).bin,$v1,0)
.fwrite -b f &b
inc %i $calc((8 / %bo) * %dec)
}
run $nofile($fopen(f).fname)
.fclose f
print Récupération effectuée en $tps(%ticks)
}
alias -l _read {
;syntaxe $_read(fichier,debut_lecture,fin_lecture,bits/octet,decalage)
bread $1-3 &data
var %i $2 , %max $calc($2 + $3) , %p 1
while (%i <= %max) {
var %data = %data $+ $right($base($bvar(&data,%p,1),10,2,8),$4)
if ($len(%data) == 8) { var %final %final $+ $chr($base(%data,2,10)) | unset %data }
inc %p $5
inc %i $4
}
return $iif($prop == bin,$asc(%final),%final)
}
;#ALIAS DIVERS
alias stegBMP { if !$dialog(steg_dial) { dialog -m steg_dial steg_dial | dialog -bs steg_dial -1 -1 124 59 } }
alias dire return $+($scriptdir,fichiers $iif($1 == rec,récupérés,porteurs),\)
alias -l tps return $duration($calc(($ticks - $1) / 1000)))
alias -l print did -ra steg_dial 24 $1-
alias -l q return $+(",$$1-,")
alias -l d return $did(steg_dial,$1)
alias -l bpp { bread $q($1-) 28 1 &bpp | if ($bvar(&bpp,1,1) != 24) return 0 | return 1 }
alias -l stegano.len {
var %d steg_dial
return $calc(($file($did(%d,11)) * (8 / $did(%d,17))) * $did(%d,26) + 110 + 56 + (8 * $len($nopath($did(%d,11)))))
}
alias -l stegano_dial.hide {
var %d steg_dial
if ($dialog(%d).w > 350) { var %i 130 | while (%i >= 0) { dialog -bs %d -1 -1 $calc(125 + %i) 59 | dec %i } }
var %i 1 | while (%i <= 135 ) { dialog -bs %d -1 -1 124 $calc(50 + %i) | inc %i } | did -b %d 19 | did -e %d 20
}
alias -l stegano_dial.read {
var %d steg_dial
if ($dialog(%d).h > 200) { var %i 134 | while (%i >= 0) { dialog -bs %d -1 -1 124 $calc(58 + %i) | dec %i } }
var %i 1 | while (%i <= 131) { dialog -bs %d -1 -1 $calc(115 + %i) 59 | inc %i } | did -b %d 20 | did -e %d 19
}
alias -l stegano.sel {
var %d did -ra steg_dial
if ($1 == 4) { var %p $$sfile($+($scriptdir,:\*.bmp),Selectionnez l'image support,Selectionner) | %d 5 %p | %d 13 $instok($nopath(%p),STEG,-1,46) }
elseif ($1 == 7) { var %f $q($dire) | %d 6 $$sfile( %f \*.bmp,Selectionnez l'image support,Selectionner) }
elseif ($1 == 10) %d 11 $$sfile($scriptdir \*.*,Selectionnez le fichier à masquer,Selectionner)
}
Conclusion
Installation:
-Placez le dossier stegBMP à la racine de votre script
-dans mirc faites : alt + R > file > load... et chargez le remote stegbmp.mrc
-Si une fenêtre de warning apparaît, acceptez (afin d'installer les dossier neccessaires au bon fonctionnement du script)
-enfin, tapez /stegBMP pour l'utiliser
/!\
Le fichier d'aide est masqué dans l'image incluse dans le zip, donc utilisez l'add-on pour la faire apparaître ;-)
lisez le si vous ne savez ou ne comprennez pas comment remplir les paramètres
/!\
Je complèterai l'aide prochainement
Historique
- 01 janvier 2006 23:32:08 :
- erreur bête
- 02 janvier 2006 08:57:54 :
- .
- 04 janvier 2006 18:21:28 :
- mise à jour majeur !
dorenavent le masquage s'effectue de manière beaucoup plus discrète que précedemment
- 10 janvier 2006 22:01:41 :
- j'ai ajouté un autre fichier contenant le même code, mais cette fois ci entièrement commenté
N'oubliez pas de charger soit l'un, soit l'autre dans vos remotes, mais pas les deux !
- 10 janvier 2006 22:05:43 :
- j'ai ajouté un autre fichier contenant le même code, mais cette fois ci entièrement commenté
N'oubliez pas de charger soit l'un, soit l'autre dans vos remotes, mais pas les deux !
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Masquer IP [ par Stonz ]
Bonjour,çà fait 2 jours que j'essaye de cacher un peu mon IP dans les info ou dans les whois... mais j'y arrive pas, çà commence à m'énerver. J'ai cré
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Forum
RE : AIDERE : AIDE par Nico26000
Cliquez pour lire la suite par Nico26000 RE : AIDERE : AIDE par WorldDMT
Cliquez pour lire la suite par WorldDMT AIDEAIDE par Nico26000
Cliquez pour lire la suite par Nico26000
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|