• STATISTIQUES
  • Il y a eu un total de 0 membres et 31144 visiteurs sur le site dans les dernières 24h pour un total de 31 144 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Root-me
    Script: 5, Système: 20, Cracking: 16, Cryptanalyse: 17, Programmation: 8, Réaliste: 11, Réseau: 10, Stéganog...
    Challenges
    [EN] Sabre Films
    Site de challenge présenté sous la forme d'une quête. Vous êtes un détective et devrez résoudre d...
    Challenges
    [FR] frameip
    le site de partage des connaissances du monde TCPIP
    Protocole
    [EN] osix
    Site de challenge qui utilise un système de level on chaque épreuve doit être réussie avant d'accédÃ...
    Challenges
    [FR] µContest
    µContest est un site de challenges de programmation, c'est à dire qu'il propose des épreu...
    Hacking
    [FR] WeChall
    Audio: 3, Coding: 11, Cracking: 9, Crypto: 18, Encoding: 11, Exploit: 44, Forensics: 1, Fun: 6, HTTP: 6, Image: 8, Java:...
    Challenges
    [EN] PHPFreaks
    PHPFreaks est un site dédié à l'apprentissage et l'enseignement du PHP. Ici vous trouver...
    Programmation

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!

    €



Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[C TOTW 1] Trick avec #include
25-08-2014, 11h49 (Modification du message : 15-09-2014, 13h44 par ark.)
Message : #1
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
[C TOTW 1] Trick avec #include
Hello,

A la vue des dernières discussions sur le langage C, je me suis dit que pourquoi ne pas faire un post chaque semaine pour vous montrer un truc sympa, pratique, connu ou pas du tout, bref, c'est le "tip of the week" (TOTW) !! Et je vais essayer de vous en faire un chaque lundi. =)

Du coup pour ce premier, je vais vous montrer un truc qui se base sur la commande de préprocesseur include. On la connait tous, on l'utilise tous dans le même genre de situations, mais avez vous déjà pensé a la détourner un peu de son utilisation initiale ?

Oui pour certains, non pour d'autre? Voila ce que je vous propose:

Code C :

#include <stdio.h>
#include <stddef.h>

char *tab[] = {
#include "file.txt"
};

int main(void) {
  int i;

  for (i = 0; i < sizeof(tab) / sizeof(*tab); ++i) {
    printf("%s\n", tab[i]);
  }
  return 0;
}
 


Avec bien évidement le fichier file.txt qui va avec:

Code C :

"foo",
"bar",
"nice trick",
"for",
"n-pn"
 


Qu'est ce que ça apporte? Et bien dans ce cas j'utilise un tableau a deux dimension, qui me permet de stocker des chaines de caractères, ça pourrait être utile dans le cas d'un fichier de configuration pré-compilation par exemple.

Je trouve ce truc assez fun, parce que ca peut s’avérer très pratique, et pour le coup c'est vraiment simple a mettre en place.

Comment ça marche, c'est très simple aussi, c'est le même fonctionnement qu'un #include normal en fait ! Il va juste inclure le contenu du fichier file.txt au bon endroit.

voili voilou, n'hésitez pas si vous avez des questions !
+1 (9) -1 (0) Répondre
25-08-2014, 13h26
Message : #2
notfound Hors ligne
#!/usr/bin/env bash
*



Messages : 687
Sujets : 47
Points: 271
Inscription : Sep 2012
RE: [C] tip of the week 1
Alors là, merci beaucoup car je ne connaissais pas du tout. C'est super pratique et qui plus est très simple !
+1 (0) -1 (0) Répondre
25-08-2014, 14h55
Message : #3
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: [C] tip of the week 1
Ravi que ca te fasse plaisir :p

N'hésitez pas à partager vos exemples d'utilisations de ce truc la si vous l'utilisez dans le cadre d'un projet !!
+1 (0) -1 (0) Répondre
25-08-2014, 22h52
Message : #4
fr0g Hors ligne
NTEuNDI2MzcsLTEuNzc4NDg4
*****



Messages : 348
Sujets : 22
Points: 56
Inscription : Aug 2011
RE: [C] tip of the week 1
Je note Smile merci du trick Ark Smile
+1 (0) -1 (0) Répondre
26-08-2014, 01h11
Message : #5
sakiir Hors ligne
[sakiir@Ubuntu]:~$ ./ExploitMe ShellC0de
*



Messages : 411
Sujets : 51
Points: 34
Inscription : Sep 2012
RE: [C] tip of the week 1
putain ouai Notfound , ca aurai pu servir pour le canyourunit Wink
+1 (0) -1 (0) Répondre
26-08-2014, 01h16
Message : #6
Atlas Hors ligne
Membre actif
*



Messages : 69
Sujets : 7
Points: 3
Inscription : Aug 2012
RE: [C] tip of the week 1
Merci beaucoup de l'astuce ,
C'est tout bête mais il fallait y penser !

Avec ça je me mettrais presque à apprecier les lundi :p
+1 (0) -1 (0) Répondre
26-08-2014, 09h52
Message : #7
Junky Hors ligne
Snorky Master
*



Messages : 228
Sujets : 35
Points: 203
Inscription : Mar 2013
RE: [C] tip of the week 1
Clairement un bon trick...

Dans la continuïté de celui-ci mais en bash. Certainement plus connu mais bon ca fait pas de mal de le revoir. Smile

Code BASH :

#!/bin/bash

source file.txt
 
Pour la sécurité, sous linux, le principal soucis est l'interface chaise/clavier

+1 (1) -1 (0) Répondre
26-08-2014, 15h25 (Modification du message : 26-08-2014, 15h25 par notfound.)
Message : #8
notfound Hors ligne
#!/usr/bin/env bash
*



Messages : 687
Sujets : 47
Points: 271
Inscription : Sep 2012
RE: [C] tip of the week 1
(26-08-2014, 09h52)Junky a écrit : Clairement un bon trick...

Dans la continuïté de celui-ci mais en bash. Certainement plus connu mais bon ca fait pas de mal de le revoir. Smile

Code BASH :

#!/bin/bash

source file.txt
 

Ou

Code BASH :
#!/bin/bash
. file.txt
+1 (2) -1 (0) Répondre
26-08-2014, 19h50
Message : #9
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: [C] tip of the week 1
c'est dommage qu'on puisse pas #include un fichier directement dans un tableau de char, ca aurait permis par exemple d'inclure directement les ressources (images, sons et autres) dans le binaire lorsqu'on fait une demo ou un jeu par exemple, le moyen le plus simple que j'ai trouvé étant de transiter par xxd -i pour récupérer les données au format C
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
(Nicolas Boileau, L'Art poétique)
+1 (0) -1 (0) Répondre
29-08-2014, 21h08
Message : #10
wapiflapi Hors ligne
Newbie
*



Messages : 4
Sujets : 0
Points: 8
Inscription : Nov 2012
RE: [C] tip of the week 1
(26-08-2014, 19h50)gruik a écrit : c'est dommage qu'on puisse pas #include un fichier directement dans un tableau de char, ca aurait permis par exemple d'inclure directement les ressources (images, sons et autres) dans le binaire lorsqu'on fait une demo ou un jeu par exemple, le moyen le plus simple que j'ai trouvé étant de transiter par xxd -i pour récupérer les données au format C

Faut pas chercher à faire ca en C, c'est pas fait pour. Tu veux expliquer quelque chose au linker donc man ld:

Code :
FLAGS:=    -Wl,--format=binary -Wl,yourfile -Wl,--format=default
+1 (4) -1 (0) Répondre
01-09-2014, 18h23
Message : #11
Commodor Hors ligne
Ho ! Dodgson !
*



Messages : 64
Sujets : 9
Points: 36
Inscription : Nov 2011
RE: [C] tip of the week 1
Dire que je me faisais chier comme un phoque pour lire et récupérer les variables dans mes fichiers de configuration... Sleepy
très pratique cette petite technique Tongue
Hahaha you didn't say the magic word !
+1 (0) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [C TOTW 6] Xor tricks ark 7 481 06-03-2016, 23h36
Dernier message: Commodor
  [C TOTW 2] Parcours de tableau ark 5 367 29-09-2014, 17h44
Dernier message: crown
  [C TOTW 5] bitfields ! ark 4 272 23-09-2014, 11h17
Dernier message: Aniem
  [C] tricks avec les macros ark 7 433 21-09-2014, 15h46
Dernier message: supersnail
  [C TOTW 4] Equivalent de try / catch / throw en C ark 0 133 15-09-2014, 10h00
Dernier message: ark
  [C TOTW 3] #warning, #error ark 1 183 10-09-2014, 11h49
Dernier message: ark
  [NASM] Création d'un thread sous Linux uniquement avec les syscalls supersnail 2 232 04-03-2013, 23h36
Dernier message: Dobry

Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut