[Listener] Modifs spécifiques Fon
Intégration des modifications spécifiques à la Fonera provenant du code de Julien. Extrait de son message : « Je rappelle que le programme contenu dans les FON ne contient pas la dernière version du listener (celle avec la lib confuse) celà est dû au fait que cette lib n'était pas installé. » Grâce aux options préprocesseur définies à la révision précédente, cette révision devrait pouvoir se cross-compiler (grâce au Makefile_atheros), si on active l'option PLATFORM_ATHEROS, et fonctionner sur les Fonera. Pour mémoire, toutes les fonctionnalités devraient pouvoir fonctionner, puisque des paquets libpthread et confuse existent pour OpenWRT Kamikaze. Ajout d'un fichier TODO avec quelques trucs à faire dans la même veine (compilation croisée et options préprocesseur). git-svn-id: https://pif.pu-pm.univ-fcomte.fr/svn/loc@98 785a6c6c-259e-4ff1-8b91-dc31627914f0
This commit is contained in:
parent
9f0c4793e6
commit
15979c6597
|
@ -0,0 +1,80 @@
|
|||
# Emplacement de la suite de cross-compilation
|
||||
TOOLCHAIN = /home/banc/atheros/8.09/staging_dir
|
||||
|
||||
# Répertoire d'installation
|
||||
PREFIX=/usr/local
|
||||
INSTALL_DIR= $(PREFIX)/sbin
|
||||
INSTALL_LIB= $(PREFIX)/lib
|
||||
INSTALL_INC= $(PREFIX)/include
|
||||
INSTALL_MAN= $(PREFIX)/share/man
|
||||
|
||||
# Compilateur
|
||||
CC = $(TOOLCHAIN)/toolchain-mips_gcc4.1.2/bin/mips-linux-gcc
|
||||
|
||||
# Commandes d'installation et de désinstallation
|
||||
RM=rm -fv
|
||||
CP=cp -v
|
||||
|
||||
# Cible
|
||||
TARGET=owlps-listenerd
|
||||
HEADER=owlps-listener.h
|
||||
|
||||
# Flags
|
||||
CFLAGS=-O2 -W -Wall -Wstrict-prototypes -O -I.
|
||||
DEPFLAGS=-MMD
|
||||
XCFLAGS=$(CFLAGS) $(DEPFLAGS) $(WARN) $(HEADERS)
|
||||
PICFLAG=-fPIC
|
||||
LIBS=-lm -lpcap -liw ../../libowlps/libowlps.so.1.0
|
||||
LATHEROS=-L$(TOOLCHAIN)/mips/usr/lib/
|
||||
IATHEROS=-I$(TOOLCHAIN)/mips/usr/include/
|
||||
|
||||
|
||||
## Cibles de compilation standard ##
|
||||
|
||||
.PHONY : all install uninstall clean purge help
|
||||
|
||||
all : $(TARGET)
|
||||
|
||||
% : %.o
|
||||
$(CC) $(LDFLAGS) $(STRIPFLAGS) $(XCFLAGS) -o $@ $^ $(LIBS) $(IATHEROS) $(LATHEROS)
|
||||
%.o : %.c $(HEADER)
|
||||
$(CC) $(XCFLAGS) $(IATHEROS) -c $<
|
||||
|
||||
# Compilation du programme
|
||||
$(TARGET) : $(TARGET).o $(HEADER)
|
||||
|
||||
|
||||
## Installation / désinstallation ##
|
||||
|
||||
install : $(TARGET)
|
||||
@$(CP) $(TARGET) $(INSTALL_DIR)
|
||||
@cd $(INSTALL_DIR) ; chown root:root $(TARGET) ; chmod 755 $(TARGET)
|
||||
|
||||
uninstall :
|
||||
@$(RM) $(INSTALL_DIR)/$(TARGET)
|
||||
|
||||
|
||||
## Nettoyage ##
|
||||
|
||||
clean :
|
||||
@$(RM) -fv *~ *.o *.d
|
||||
|
||||
purge : clean
|
||||
@$(RM) -fv $(TARGET)
|
||||
|
||||
|
||||
## Aide ##
|
||||
|
||||
help :
|
||||
@echo -e "Bibliothèques nécessaires à la compilation :\n\
|
||||
libpcap0.8-dev\n\
|
||||
libowlps1.0 (fournie)\n\
|
||||
\n\
|
||||
Cibles possibles :\n\
|
||||
$(TARGET) (cible par défaut) : Compile le programme $(TARGET).\n\
|
||||
install : Installe le programme $(TARGET).\n\
|
||||
uninstall : Désinstalle le programme $(TARGET).\n\
|
||||
clean : Supprime les fichiers temporaires.\n\
|
||||
purge : Supprime le résultat de la compilation.\n\
|
||||
\n\
|
||||
Note : l'installation se fait dans l'arborescence $(PREFIX). Modifiez la variable PREFIX du Makefile pour changer ce comportement."
|
|
@ -0,0 +1,3 @@
|
|||
* Makefile : utiliser des options passées au compilateur (gcc -D USE_PTHREAD) plutôt que des #define dans owlps-listener.h.
|
||||
* Fusionner Makefile et Makefile_atheros.
|
||||
* Éventuellement remplacer les options positives (USE_PTHREAD) par des options négatives (NO_USE_PTHREAD), en fonction des valeurs par défaut.
|
|
@ -8,6 +8,7 @@
|
|||
// Compilation-time options (comment-out to unactivate)
|
||||
#define USE_CONFIG_FILE // Use libconfuse to read a config file
|
||||
#define USE_PTHREAD // POSIX threads available?
|
||||
//#define PLATFORM_ATHEROS // Will we compile to an Atheros platform?
|
||||
|
||||
|
||||
#include "../../libowlps/owlps.h"
|
||||
|
|
|
@ -273,9 +273,19 @@ void read_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *p
|
|||
int i ; // Compteur
|
||||
|
||||
memcpy(&rtap_bytes, &data[2], sizeof(unsigned short)) ; // Recopie les deux octets à partir du troisième octet de donnée qui est la taille de l'en-tête rtap (change avec des flags)
|
||||
#ifdef PLATFORM_ATHEROS
|
||||
rtap_bytes = ((rtap_bytes & 0xff00) >> 8) + ((rtap_bytes & 0xff) << 8) ;
|
||||
#endif // PLATFORM_ATHEROS
|
||||
|
||||
raw_packet_type = data[rtap_bytes] ; // Au bout de l'en-tête rtap il y a celle du 802.11 dont le premier determine le type (beacon ou pas)
|
||||
|
||||
#ifdef PLATFORM_ATHEROS
|
||||
memcpy((unsigned char*) &dst_port, &data[rtap_bytes + IEEE80211_HEADER_SIZE + LLC_HEADER_SIZE + IP_HEADER_SIZE + 2], 2) ; // On récupère le port de destination
|
||||
#else // PLATFORM_ATHEROS
|
||||
memcpy((unsigned char*) &dst_port, &data[rtap_bytes + IEEE80211_HEADER_SIZE + LLC_HEADER_SIZE + IP_HEADER_SIZE + 3], 1) ; // On récupère le port de destination (mais il faut retourner les deux octets)
|
||||
memcpy(&((unsigned char*) &dst_port)[1], &data[rtap_bytes + IEEE80211_HEADER_SIZE + LLC_HEADER_SIZE + IP_HEADER_SIZE + 2], 1) ; // Port de destination = troisième et quatrième octets suivant l'en-tête IP.
|
||||
#endif // PLATFORM_ATHEROS
|
||||
|
||||
raw_packet_flags = data[rtap_bytes+1] ; // On récupère les flags 802.11, qui sont dans l'en-tête 802.11.
|
||||
|
||||
#ifdef DEBUG
|
||||
|
@ -333,6 +343,9 @@ void read_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *p
|
|||
|
||||
|
||||
memcpy(&rtap_presentflags, &data[RTAP_P_PRESENTFLAGS], RTAP_L_PRESENTFLAGS); // Récupère les flags de l'en-tête rtap
|
||||
#ifdef PLATFORM_ATHEROS
|
||||
rtap_presentflags = ((rtap_presentflags & 0xff000000) >> 24) + ((rtap_presentflags & 0xff0000) >> 8) + ((rtap_presentflags & 0xff00) << 8) + ((rtap_presentflags & 0xff) << 24) ;
|
||||
#endif // PLATFORM_ATHEROS
|
||||
|
||||
for (i = 0 ; i < 15 ; i++) // Initialisation de la structure des champs présents
|
||||
check[i] = FALSE ;
|
||||
|
|
Loading…
Reference in New Issue