PROJET AUTOBLOG


Tiger-222

Archivé

Site original : Tiger-222

⇐ retour index

Combats épiques

vendredi 12 avril 2013 à 16:58

Contexte


Il y a des moments, dans un anime, où l'on peut voir que les traits de l'auteur(e) se font différents, paressant moins soignés. Ça rend super bien pour les combats intenses, afin de faire ressortir une sensation de grande vitesse et de fluidité dans les mouvements.


Preuves


Par l'exemple, avec Naruto.
Le combat final qui oppose Naruto et Sasuke est particulièrement tendu :
La bataille entre Naruto et Sasuke fait rage, les deux amis découvrent que ce sont leurs liens qui les rendent plus fort. Sasuke fait évoluer la forme de son sharingan et veut trancher ces liens qui le lient à Naruto. Mais ce dernier ne le laisse pas faire et se transforme, sous l'emprise de Kyûbi.

Le cri des larmes, tu es mon ami – Saison 6 - Épisode 5 (n°133) – torrent


Un autre exemple, avec Naruto Shippûden, lors de l'affrontement contre Pain :
[Chapitres 437 à 439] – Fou de rage, Naruto libère le chakra de Kyûbi sous la forme d'un démon à six queues et perd tout contrôle, affolant Yamato. Ne parvenant pas à prendre l’ascendant sur le bijū, Tendô utilise sa technique de « Naissance de l'astre divin » enfermant Naruto-Kyûbi dans une petite lune en altitude attirant une grande quantité de matière. Après avoir sorti deux queues de plus, Kyûbi demande à Naruto dans son subconscient d'enlever le sceau qui le retient ; alors que le jeune ninja s’apprête à s’exécuter, le 4e Hokage apparaît et l'en empêche…

Naissance de l'astre divin – Saison 7 - Épisode 14 (n°167) – torrent


Pour finir


Voici deux liens qui mènent vers le Saint Graal des épisodes : Naruto et Naruto Shippûden.
Naruto est le seul anime (que j'ai vu) dans lequel on remarque une différence flagrante dans les dessins lors de combats intensifs. Cependant, si vous avez d'autres exemples, je serai ravi de mettre à jour cette page.

Note : si un jour Gunnm Last Order est adapté en anime, je n'ose imaginer le résultat lorsque Gally (Yoko ou Alita c'est selon) et son équipe se battent lors du Z.O.T.T....


Phase : 70  Tu étais le seul au monde

Le projet Tor Browser Bundle

mercredi 10 avril 2013 à 14:55
Je relaye l'info de NeoSting.Net, en ajoutant quelques détails.

Installation


J'ai du ajouter une dépendance (python-all), la commande finale est donc :
$ aptitude install git python-stdeb python-gtk2 python-psutil python-twisted wmctrl gnupg python-all
$ git clone git://github.com/micahflee/torbrowser-launcher.git
$ cd torbrowser-launcher
$ ./build_and_install.sh


Exécution


J'ai constamment le message "SIGNATURE VERIFICATION FAILED!", en effet il cherche la signature mais il s'agit d'un fichier HTML :
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found </head><body>
<h1>Not Found</h1>
<p>The requested URL /dist/torbrowser/linux/tor-browser-gnu-linux-x86_64-2.4.11-alpha-2-dev-fr.tar.gz.asc was not found on this server.</p>
<address>Apache Server at www.torproject.org Port 443</address>
</body></html>

Si l'on fouille un peu, on se rend compte que, sur sur le serveur, il n'y a que la version en-US qui est disponible :
https://www.torproject.org/dist/torbrowser/linux/
...
tor-browser-gnu-linux-x86_64-2.4.11-alpha-2-dev-en-US.tar.gz
tor-browser-gnu-linux-x86_64-2.4.11-alpha-2-dev-en-US.tar.gz.asc
...
Pas grave, pour ceux qui veulent absolument la dernière mise à jour, il suffit de modifier la ligne 194 du fichier torbrowser-launcher tel que default_locale = 'en-US'.

Le dernière mise à jour est récupérée et le panneau de contrôle Vidalia s'affiche ainsi que le navigateur sécurisé/anonyme :


Épurée et efficace comme je les aime !


Configuration


Pour mettre l'interface en français, cliquer sur Settings puis, dans l'onglet Appearance, sélectionner français dans la liste déroulante en dessous de Language.

Ensuite, si vous voulez apporter votre contribution au projet, dans l'onglet Partage, vous pouvez configurer votre relais Tor.
Comme c'est bien décrit dans l'aide, je la cite, mais vous devrier y jeter un oeil c'est bien expliqué :
Le réseau Tor est constitué par des bénévoles du monde entier qui donnent une partie de leur bande passante perdue en installant un relais Tor. Vidalia vous aide à participer au réseau Tor en facilitant l'installation de votre propre relais.

Ça ne mange pas de pain et vous aurez fait une bonne action.

andLess

mardi 9 avril 2013 à 15:45
Après quelques recherches...
Et moultes essais, j'ai enfin trouvé le lecteur de musique qu'il me fallait pour Android : andLess !
Simple et efficace, il est léger (652Kio une fois installé) et reconnaît tous les formats natifs ainsi que le FLAC et d'autres conteneurs sans pertes.

En prime, voilà deux captures d'écran :

Factorisation - P and Q

mardi 9 avril 2013 à 15:28
Le but est de déchiffrer le mot de passe de validation.
Voici la clef utilisée : ch6.zip, ainsi que le texte chiffré :
e8oQDihsmkvjT3sZe+EE8lwNvBEsFegYF6+OOFOiR6gMtMZxxba/bIgLUD8pV3yEf0gOOfHuB5bC3vQmo7bE4PcIKfpFGZBA


Récupérer N et e


$ openssl rsa -in pubkey.pem -pubin -text -modulus
Public-Key: (576 bit)
Modulus:
00:c2:cb:b2:4f:db:f9:23:b6:12:68:e3:f1:1a:38:
96:de:45:74:b3:ba:58:73:0c:bd:65:29:38:86:4e:
22:23:ee:eb:70:4a:17:cf:d0:8d:16:b4:68:91:a6:
14:74:75:99:39:c6:e4:9a:af:e7:f2:59:55:48:c7:
4c:1d:7f:b8:d2:4c:d1:5c:b2:3b:4c:d0:a3
Exponent: 65537 (0x10001)
Modulus=C2CBB24FDBF923B61268E3F11A3896DE4574B3BA58730CBD652938864E2223EEEB704A17CFD08D16B46891A61474759939C6E49AAFE7F2595548C74C1D7FB8D24CD15CB23B4CD0A3
writing RSA key
-----BEGIN PUBLIC KEY-----
MGQwDQYJKoZIhvcNAQEBBQADUwAwUAJJAMLLsk/b+SO2Emjj8Ro4lt5FdLO6WHMMvW
UpOIZOIiPu63BKF8/QjRa0aJGmFHR1mTnG5Jqv5/JZVUjHTB1/uNJM0VyyO0zQowIDAQAB
-----END PUBLIC KEY-----
Conversion héxa => décimale :
$ python -c "print int('valeur_Modulus', 16)"
Nous avons donc :
N =
188198812920607963838697239461650439807163563379417382700763356422988859715234665485319060606504743045317388011303396716199692321205734031879550656996221305168759307650257059
e = 65537


Déterminer les facteurs p et q


Le site factordb permet de les trouver facilement.
http://www.factordb.com/index.php?query=valeur_N
Nous trouvons donc :
p = 398075086424064937397125500550386491199064362342526708406385189575946388957261768583317
q = 472772146107435302536223071973048224632914695302097116459852171130520711256363590397527


Trouver d


Voici le code de rsatool.py.
Dans le code suivant, par soucis de clarté je ne renseigne pas les valeurs de p, q ni N.
$ python rsatool.py -p valeur_p -q valeur_q -n valeur_N -e valeur_e
Using (p, q) to initialise RSA instance
d = 32030e42c69d4e77de7e2397b13dba2e52f2c57a205f5973fed6f87632f53cf8886609ff63fa114e2b5df1db6249f8eaf0bf5fa26ad5b8e48b7fab050d32fc574b446e22d08ba7b1
Conversion héxa => décimale :
$ python -c "print int('valeur_d', 16)"
Enfin, d =
48318251158920145864930035723053089097690375168562443830554407970661009102774592695057202204701378327623682075089028698815133956650193819978456750305738325912711134934968241


Final


La solution finale peut-être trouvée à l'aide du module rsa (pip install rsa) :
import rsa
pk = rsa.PrivateKey(N, e, d, p, q)
import base64
rsa.decrypt(base64.b64decode(ciphertext), pk)
>>> Hop, le mot de passe de validation est "*****".

Sources diverses : infond, m0x39.blogspot et doc python.

ELF - Random Crackme

mardi 9 avril 2013 à 15:10
Le challenge consiste à donner le bon mot de passe. Le fichier ch5.zip est fourni.

Étape 1


Décompresser l'archive... Facile !
On se retrouve avec un fichier nommé crackme_wtf.


Étape 2


MàJ : il suffit de faire un "ar -x crackme_wtf" pour décompresser le fichier.
Tu peux sauter cette étape.


Sous Debian GNU/Linux, ce fichier a l'icône d'une archive, cependant, pas moyen d'en faire quelques chose.
La commande file renvoie :
$ file crackme_wtf
crackme_wtf: current ar archive
Bon, voyons à l'aide d'un éditeur héxadécimal ce que donnent les 8 premiers octets :
$ hexdump -n 8 -C crackme_wtf
00000000 21 3c 61 72 63 68 3e 0a |!<arch>.|
Mouai... À tout hasard, l'excellent hachoir-subfile saura peut-être m'en dire plus.
(hachoir-subfile) L'idée est d'extraire des fichiers (non compressés, non chiffrés et non fragmentés) contenus dans d'autres fichier – Victor STINNER.

$ hachoir-subfile crackme_wtf
[+] Start search on 14418 bytes (14.1 KB)
[+] File at 0: Unix archive
[+] File at 424: ELF Unix/BSD program/library: 32 bits
[+] End of search -- offset=14418 (14.1 KB)
Hop hop ! Que vois-je ? À l'offset 424 il y aurait un binaire ELF ? Ok, tail est notre ami :
$ tail --bytes=+425 crackme_wtf >Crackme
$ file Crackme
chal: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped
$ ldd Crackme
linux-gate.so.1 => (0xf7736000)
libc.so.6 => /lib32/libc.so.6 (0xf75b3000)
/lib/ld-linux.so.2 (0xf7737000)
$ chmod +x Crackme
$ ./Crackme
** Bienvenue dans ce challenge de cracking **
[+] Password :azerty
[!]Access Denied !
[-] Try again
L'exécutable est lié dynamiquement aux bibliothèques, ce qui sera intéressant par la suite.


Étape 3


Nous avons enfin l'exécutable, voyons ce qu'on peut en faire.
$ strings Crackme
/lib/ld-linux.so.2
__gmon_start__
libc.so.6
_IO_stdin_used
exit
sprintf
srand
puts
time
__stack_chk_fail
stdin
getpid
fgets
strlen
memset
getchar
__errno_location
fputc
malloc
stderr
ptrace
fwrite
strchr
strcmp
__libc_start_main
free
GLIBC_2.4
GLIBC_2.0
PTRh
VTEP
IQAV
Y[_]
[^_]
_VQLGE_TQPTYD_KJTIV_
%lld%s
[-] Allocation memoire echouee!
[-]Debugger detecte ... Exit
** Bienvenue dans ce challenge de cracking **
[+] Password :
[!]Access Denied !
[-] Try again
[+]Good password
[+] Clee de validation du crack-me :
%d_%s%d_
Il y a une protection anti-debugger apparemment et quelques appels à des fonctions qui peuvent être intéressantes telles que strcmp, strlen ou même strchr.

Je tente quand même d'ouvrir le binaire dans un débugger :
$ gdb Crackme            
# (...)
Reading symbols from /home/tiger-222/chal...done.
(gdb) run
Starting program: /home/tiger-222/chal
[-]Debugger detecte ... Exit
[Inferior 1 (process 6523) exited with code 01]
(gdb) quit

$ strace ./Crackme
(...)
write(2, "[-]Debugger detecte ... Exit\n", 29[-]Debugger detecte ... Exit
(...)
Comme il fallait s'y attendre, gdb et strace ne fonctionnent pas. J'opte pour l'usurpation (hook) de la fonction strcmp.


Étape 4

Alors, l'usurpation, comment ça se passe ?
Et bien il y a une variable d'environnement sous le doux nom de LD_PRELOAD qui sert à charger ses propres bibliothèques de fonction. Je vais m'en servir pour dire au programme de prendre la mienne plutôt que celle du système.

Voici le code pour hook_strcmp.c :
#define _GNU_SOURCE
#include <stdio.h> #include <dlfcn.h>

int strcmp(const char *str1, const char *str2) {
printf("[Hook strcmp] str1 = %s\n", str1);
printf(" str2 = %s\n", str2);

// Appel de la véritable fonction
typeof(strcmp)* function;
function = dlsym(RTLD_NEXT, "strcmp");
return (*function)(str1, str2);
}
Que l'on compile tel que :
$ gcc -Wall -fPIC -c -o hook_strcmp.o hook_strcmp.c
hook_strcmp.c:5:5: warning: conflicting types for built-in function ‘strcmp’ [enabled by default]
$ gcc -shared -fPIC -Wl,-soname -Wl,hook_strcmp.so -ldl -o /tmp/hook_strcmp.so hook_strcmp.o
L'erreur, c'est normal, le compilo nous informe officiellement que notre fonction est en conflit avec celle du système, tiens donc !
Pour trouver le prototype d'une fonction, va faire un tour sur ce site.

Nous avons donc notre bibliothèque perso, voyons ce que ça donne :
$ export LD_PRELOAD="/tmp/hook_strcmp.so"
$ ./Crackme

** Bienvenue dans ce challenge de cracking **

[+] Password :azerty
[Hook strcmp] str1 = azerty
str2 = 235625580_VQLGE_TQPTYD_KJTIV_

[!]Access Denied !
[-] Try again
Ah ! C'est un début prometteur !

Testons str2 :
$ ./Crackme

** Bienvenue dans ce challenge de cracking **

[+] Password :235625580_VQLGE_TQPTYD_KJTIV_
[Hook strcmp] str1 = 235625580_VQLGE_TQPTYD_KJTIV_
str2 = 139734408_VQLGE_TQPTYD_KJTIV_

[!]Access Denied !
[-] Try again
Maintenant c'est clair, le mot de passe est constitué d'un nombre qui semble aléatoire suivi de la chaîne _VQLGE_TQPTYD_KJTIV_.

Tout à l'heure, la commande strings nous a renvoyé d'autres noms de fonctions utilses pour le pseudo-aléatoire tel que srand, rand et time. Notons aussi getpid(), il arrive que le pid soit ajouté comme sel.

C'est parti pour de l'usurpation de bourin, hook_multi.c :
#define _GNU_SOURCE
#include <stdio.h> #include <dlfcn.h>

int strcmp(const char *str1, const char *str2) {
printf("[Hook strcmp] str1 = %s\n", str1);
printf(" str2 = %s\n", str2);

// Appel de la véritable fonction
typeof(strcmp)* function;
function = dlsym(RTLD_NEXT, "strcmp");
return (*function)(str1, str2);
}

int getpid() { printf("[Hook getpid] 0\n"); return 0; }
int srand() { printf("[Hook srand] 0\n"); return 0; }
int time() { printf("[Hook time] 0\n"); return 0; }
Tout le monde renverra 0, comme ça pas de chichi, si le programme souhaite un nombre pseudo-aléatoire entre 0 et 0, ça restreint les possibilités !

Testons :
$ gcc -Wall -fPIC -c -o hook_multi.o hook_multi.c
hook_strcmp.c:5:5: warning: conflicting types for built-in function ‘strcmp’ [enabled by default]
$ gcc -shared -fPIC -Wl,-soname -Wl,hook_multi.so -ldl -o /tmp/hook_multi.so hook_multi.o
$ export LD_PRELOAD="/tmp/hook_multi.so"
$ ./Crackme
[Hook time] 0
[Hook srand] 0
[Hook getpid] 0
[Hook srand] 0
[-]Debugger detecte ... Exit
Arf ! Pas bon ça !
Les usurpations de time, srand et getpid semblent fonctionner, je supprime celle de rand... Ça fonctionne. Vilain petit canard !

Résultat :
$ export LD_PRELOAD="/tmp/hook_multi.so"
$ ./Crackme
[Hook time] 0
[Hook srand] 0
[Hook getpid] 0

** Bienvenue dans ce challenge de cracking **

[+] Password :azerty
[Hook strcmp] str1 = azerty
str2 = 0_VQLGE_TQPTYD_KJTIV_

[!]Access Denied !
[-] Try again

Je réessaie 3-4 fois et str2 vaut toujours la même chose, je l'entre comme mot de passe et.. TADAAA !!
$ ./Crackme
[Hook time] 0
[Hook srand] 0
[Hook getpid] 0

** Bienvenue dans ce challenge de cracking **

[+] Password :0_VQLGE_TQPTYD_KJTIV_
[Hook strcmp] str1 = 0_VQLGE_TQPTYD_KJTIV_
str2 = 0_VQLGE_TQPTYD_KJTIV_

[+]Good password
[+] Clee de validation du crack-me : *****
Bon je cache quand même le mot de passe pour ne pas te mâcher tout le travail.

Je me suis inspiré de cette source.