PDA

View Full Version : C++ Gli hook di windows ex (C++ Cerco un'idea)


misterx
04-03-2003, 15:13
la lista sotto, è il contenuto dei file di un disco;
devo scrivere un programma che legga tale file e che crei,
sotto alla cartella "foto", ad esempio:

una sottocartella di nome "sardegna"
sotto "sardegna", una sottocartella "mare"

dalla lista si evince anche che sotto "sardegna" vi sono le sottocartelle:
"casa", "nonna", "adriana", "zelig", "giostre", "scuola", "museo"

ad un certo punto, appare sotto "foto" la cartella "egitto" con le sue
sotto cartelle e devono essere create allo stesso modo di "sardegna"


[FILE DI INPUT]

G:\tools\foto\sardegna\mare\pic_268.jpg
G:\tools\foto\sardegna\mare\pic_269.jpg
G:\tools\foto\sardegna\mare\pic_266.jpg

G:\tools\foto\sardegna\casa\pic_309.jpg
G:\tools\foto\sardegna\casa\pic_310.jpg
G:\tools\foto\sardegna\casa\pic_311.jpg

G:\tools\foto\sardegna\nonna\pic_277.jpg
G:\tools\foto\sardegna\nonna\pic_278.jpg
G:\tools\foto\sardegna\nonna\pic_279.jpg

G:\tools\foto\sardegna\adriana\pic_288.jpg
G:\tools\foto\sardegna\adriana\pic_289.jpg
G:\tools\foto\sardegna\adriana\pic_290.jpg

G:\tools\foto\sardegna\zelig\pic_272.jpg
G:\tools\foto\sardegna\zelig\pic_273.jpg
G:\tools\foto\sardegna\zelig\pic_274.jpg

G:\tools\foto\sardegna\giostre\pic_315.jpg
G:\tools\foto\sardegna\giostre\pic_316.jpg
G:\tools\foto\sardegna\giostre\pic_317.jpg

G:\tools\foto\sardegna\scuola\pic_329.jpg
G:\tools\foto\sardegna\scuola\pic_330.jpg
G:\tools\foto\sardegna\scuola\pic_331.jpg

G:\tools\foto\sardegna\museo\pic_322.jpg
G:\tools\foto\sardegna\museo\pic_323.jpg
G:\tools\foto\sardegna\museo\pic_324.jpg

G:\tools\foto\egitto\agosto\piramidi\pic_137.jpg
G:\tools\foto\egitto\agosto\piramidi\pic_136.jpg

G:\tools\foto\egitto\agosto\cammello\pic_135.jpg
G:\tools\foto\egitto\agosto\cammello\pic_134.jpg


quello che desidero ottenere è simile a questo ma
rediretto su un file:


[FILE DI OUTPUT]
cartella: sardegna
sottocartella: mare
(pic_268.jpg)
(pic_269.jpg)
(pic_266_jpg)
sottocartella: casa
(pic_309.jpg)
(pic_310.jpg)
(pic_311.jpg)
sottocartella: nonna
(pic_277.jpg)
(pic_278.jpg)
(pic_279.jpg)

e così via sino a "museo"

poi

cartella: sardegna
sottocartella: piramidi
(nomi foto)
.......
.....
sottocartella: cammello
(nomi foto)
.......
.....



P.S.
se avete qualche idea

grazie

misterx
05-03-2003, 13:52
ho risolto finalmente :)

non chiedetemi come perchè sarebbe un massacro rispondervi

Ciao

Kleidemos
05-03-2003, 18:27
Originally posted by "misterx"

ho risolto finalmente :)

non chiedetemi come perchè sarebbe un massacro rispondervi

Ciao

come?
:D :D

Sei un mostro...........risolto in un solo giorno :eek:

misterx
06-03-2003, 21:51
eh eh :)

purtroppo non va sempre così di lusso ;)

cionci
07-03-2003, 12:07
Con FindFirstFile ?!?!?!

misterx
08-03-2003, 12:57
Originally posted by "cionci"

Con FindFirstFile ?!?!?!

lavorando su un file di testo?


non sarebbe male redirigere l'output di una funzione tipo:

CopyFile()

su di un file di testo; per creare una sorta di simulazione :)

Ciao


una banalità


**********************************************
come posso passare un puntatore a file ad un'altra funzione senza che
questa sia dichiarata globale?
**********************************************

esempio:


main()
{
void aprifile();
void scrivifile(FILE fp); // qui c'è l'errore!!!


void aprifile()
{
FILE *fp;

fp = fopen("miofile.txt","w");
if(!fp) return;

scrivifile(fp);// qui c'è l'errore!!!

fclose(fp);
}

void scrivifile(fp)
{
fprint(fp,"zio paperino\n");

return 0;
}

}// end main

cionci
08-03-2003, 13:05
Passa il puntatore al file per riferimento...

void scrivifile(FILE &fp);

misterx
08-03-2003, 13:07
Originally posted by "cionci"

Passa il puntatore al file per riferimento...

void scrivifile(FILE &fp);


già fatto ma non ne vuole sapere: sarà mica il mio BCB che fa le bizze

/\/\@®¢Ø
08-03-2003, 18:09
ma il tipo di fp non e' FILE* ?
In tal caso sicuramente non puoi usare una funzione che chiede un FILE& o un FILE semplice...

misterx
08-03-2003, 19:49
Originally posted by "/\/\@®¢Ø"

ma il tipo di fp non e' FILE* ?
In tal caso sicuramente non puoi usare una funzione che chiede un FILE& o un FILE semplice...


ciao Marco


e quindi? :)

/\/\@®¢Ø
08-03-2003, 20:12
Quindi il parametro dovrebbe essere un FILE* :D

void scrivifile(FILE *fp);

anche perche' poi nella funzione chiamata usi fprintf che vuole un FILE* e quindi passargli un parametro di quel tipo mi sembra la cosa piu' ragionevole.

misterx
08-03-2003, 20:24
Originally posted by "/\/\@®¢Ø"

Quindi il parametro dovrebbe essere un FILE* :D

void scrivifile(FILE *fp);

anche perche' poi nella funzione chiamata usi fprintf che vuole un FILE* e quindi passargli un parametro di quel tipo mi sembra la cosa piu' ragionevole.


guarda che le ho provate di tutte ;)

ma il compilatore si rifiuta: mi dice che la dichiarazione è osoleta

/\/\@®¢Ø
08-03-2003, 20:29
ah... ora ho visto scusa...
e' legale in C dichiarare una funzione nel corpo di un'altra :confused: ?
Adesso ho capito cosa intendevi col dichiararla globale...

Da quel che ricordo io no... pero' non ne sono sicuro.

/\/\@®¢Ø
08-03-2003, 20:36
Contrordine compila...
E' sufficiente includere stdio.h (per la definizione di FILE)
anche se mi da due warning che non mi piacciono niente...

(ah... la funzione e' dichiarata void e ritorna 0...)

misterx
08-03-2003, 21:23
non compila

ho idea che dovrò intervenire sulle opzioni del compilatore

/\/\@®¢Ø
08-03-2003, 21:45
aspetta... che compilatore usi ?
il mio (gcc 3.2) compila senza problemi (ma un paio di warning ( il seguente codice:

#include <stdlib.h>
#include <stdio.h>

main()
{
void aprifile();
void scrivifile(FILE* fp); // qui c'è l'errore!!!


void aprifile()
{
FILE *fp;

fp = fopen("miofile.txt","w");
if(!fp) return;

scrivifile(fp);// qui c'è l'errore!!!

fclose(fp);
}

void scrivifile(FILE* fp)
{
fprint(fp,"zio paperino\n");
}

}// end main


eventualmente, che errore ti da ?

misterx
09-03-2003, 09:54
sono errori casuali!


ma ora funziona perfettamente!

************************************************
c'è un mistero in BCB che non ho ancora scoperto
************************************************

se inizio un nuovo progetto e lo salvo in una directory con nome
"progetto1" in c:\windows\desktop\progetto1

e poi, per comodità, sposto "progetto1" sotto c:\temp

compilando, vengono generati una miriade di errori, compreso
quello da me esposto

sarà un bacarozzo dell'editor o un'opzione dello stesso che mi sfugge!!

Ciao

cionci
09-03-2003, 14:09
Originally posted by "/\/\@®¢Ø"

ma il tipo di fp non e' FILE* ?
In tal caso sicuramente non puoi usare una funzione che chiede un FILE& o un FILE semplice...
Azz...è vero :)

misterx
10-03-2003, 12:25
questa è una frase criptata attraverso un mio banale algoritmo:

+AÑÞÎÙßÏÚâÙèBÉà‚ÑèÏÞÛÙè6ÉÑÔÙâÞÍâß

desideravo conoscere se qualcuno è in grado di decriptarla per sapere se il mio metodo è efficace

io temo di no

cionci
10-03-2003, 14:44
Credo che serva qualche indizio ulteriore...altrimenti non ci sono metodi per risalire al sorgente...che ne so...una stringa di riscontro (in chiaro e criptata), se la lunghezza della frase criptata è uguale al sorgente, se la frase che hai criptato ha un senso...

misterx
10-03-2003, 16:08
Originally posted by "cionci"

Credo che serva qualche indizio ulteriore...altrimenti non ci sono metodi per risalire al sorgente...che ne so...una stringa di riscontro (in chiaro e criptata), se la lunghezza della frase criptata è uguale al sorgente, se la frase che hai criptato ha un senso...


ma se si vocifera che esistono programmi in grado di decriptare qualsiasi cosa


forse devo aver visto qualche film di troppo

cionci
10-03-2003, 16:13
Eh sì...renditi conto che io potrei fare molti algoritmi che codificano una qualsiasi stringa (solo limitata dalla lunghezza) nella stessa identica stringa criptata che hai postato...

Poi vabbè se l'algoritmo è banale ci si arriva in qualche modo... Solitamente la prima strada che si cerca riguarda la corrispondenza 1-1 di carattere criptato e carattere in chiaro...

Comunque certo non è impossibile riuscire ad arrivare al testo celato, ma sicuramente servono altri indizi...

/\/\@®¢Ø
10-03-2003, 16:24
Originally posted by "misterx"




ma se si vocifera che esistono programmi in grado di decriptare qualsiasi cosa


forse devo aver visto qualche film di troppo
In linea generale non esiste niente di indecrittabile (forse sfruttando la meccanica quantistica sembra... ma per ora niente di certo). Tutto sta a vedere quanto tempo occorre. Non sapere di preciso l'algoritmo utilizzato e' un aiuto ma non ferma certo una persona decisa (ed esperta). La sicurezza di solito la si pone nella mole di dati necessaria per una "forzatura" (ad esempio se per decrittare un mess. con forza bruta ti ci vogliono 3000 anni penso che desisterai :D)

misterx
10-03-2003, 19:29
eppure pensavo che vi fossero programmi in stile FBI che ci impiegassero un attimo

se ci voglio veramente 3000 anni; per i miei scopi il mio algoritmo va più che bene

cmq, ho solo reinventato l'acqua calda :)

cionci
10-03-2003, 19:36
Comunque non è detto che per il tuo algoritmo ci vogliano 3000 anni...il discorso era che bisogna fare in modo che per forzare l'algoritmo ci voglia molto tempo...

Per il tuo non so...ma se c'è una corrispondenza carattere-carattere ci si mette molto poco... Ad esempio il procedimento più semplice per criptare è l'or esclusivo...magari a maschera variabile sul contenuto del testo...

misterx
10-03-2003, 19:44
scusa ma ultimamente sono un pò fuso; non ti ho spiegato il metodo

è semplicissimo

digito una sorta di password (alfanumerica) lunga a piacere

leggo un carattere alla volta e sommo al primo byte letto il primo carattere della password, al secondo carattere letto il secondo carattere della password e così via

però c'è una chicca finale

la seconda volta che scansiono la password, parto dal secondo carattere, per evitare fenomeni di ripetibilità; e così via sino alla fine della password

alla fine del ciclo, sommo la password al contrario usando il medesimo metodo

verloc
11-03-2003, 09:37
Tanto per fare "Cultura":

Ci sono strumenti che rilevano a distanza lo stato magnetico del monitor in modo da sapere tutto quello che stai facendo.

In genere le "Autorità" piuttosto che perdere tempo a decrittare,
quando il tipo è uno "tosto",lo fregano a monte cioè nel momento in cui lui accede al file in chiaro o semplicemente piazzandoti un key logger o similaria.

Con il microscopio a scansione magnetica possono fare del tuo disco quasi quello che vogliono.

Statisticamente infatti per una cancellazione sicura ci vogliono una trentina di sovrascrittura.

Morale :puoi avere l'algoritmo più tosto del mondo ma quando hai una microcamera che ti spia quando digiti la pass sei fregato e manco lo sai.

:D

misterx
11-03-2003, 19:20
avevo già sentito tempo fa questa storia, ma è roba da controspionaggio industriale o giù di li

penso che non sia il mio caso, sempre che non interessi loro le foto delle mie vacanze :)

/\/\@®¢Ø
12-03-2003, 08:15
Originally posted by "misterx"

eppure pensavo che vi fossero programmi in stile FBI che ci impiegassero un attimo

se ci voglio veramente 3000 anni; per i miei scopi il mio algoritmo va più che bene

cmq, ho solo reinventato l'acqua calda :)
Il tempo dipende dalla complessita' dell'algoritmo (e della chiave) utilizzato. Se comunque l'algoritmo lo vuoi per necessita' (lavoro ad esempio) e non per divertimento, forse e' meglio se provi qualche libreria gia' pronta. Ce ne sono diverse in giro, anche di gratuite, anche se non saprei consigliarti quale visto che non le conosco bene.

cionci
12-03-2003, 08:48
RC5 o RC4....ad esempio...
Sono stati crackati, ma fanno ancora il loro sporco lavoro...

Se vuoi fare lo sborone RSA ;)

Poi c'è MD5, ma non serve per criptare...è una specie di impronta digitale...

x110
12-03-2003, 11:11
Originally posted by "verloc"

Tanto per fare "Cultura":

Ci sono strumenti che rilevano a distanza lo stato magnetico del monitor in modo da sapere tutto quello che stai facendo.

In genere le "Autorità" piuttosto che perdere tempo a decrittare,
quando il tipo è uno "tosto",lo fregano a monte cioè nel momento in cui lui accede al file in chiaro o semplicemente piazzandoti un key logger o similaria.

Con il microscopio a scansione magnetica possono fare del tuo disco quasi quello che vogliono.

Statisticamente infatti per una cancellazione sicura ci vogliono una trentina di sovrascrittura.

Morale :puoi avere l'algoritmo più tosto del mondo ma quando hai una microcamera che ti spia quando digiti la pass sei fregato e manco lo sai.

:D

DOVE SI PUO' TROVARE INFO CIRCA QUESTO MICROSCOPIO A SCANS ELETTRONICA

E QUELLO STRUMENTO CHE MISURA A DISTANZA LO STATO MAGNETICO
DEL VIDEO?

CIOE' SONO QUASI COSE INCREDIBILI, SAI ALTRO?

misterx
12-03-2003, 19:17
continuo su questo 3d

Cionci, tempo fa si parlava degli hook di windows, tcnologia ch dovevo sfruttare per lavoro ma, mi avevi messo la pulce all'orecchio circa gli oggetti COM o similari

ti ricordo che avevo la necessità di influenzare il comportamento di un programma attraverso un altro programma

mi chiedevo cosa mi avevi suggerito! (benedetto motore di ricerca)

volevo provare per questa strada :)

cionci
12-03-2003, 19:46
Sinceramente non me lo ricordo... Gli oggetti COM servono per altre cose...

misterx
12-03-2003, 19:48
tipo?

cionci
12-03-2003, 19:55
Sono componenti da utilizzare in altri programmi...tipo ActiveX...

misterx
12-03-2003, 20:01
ah, ora ricordo: mi hai risparmiato una ricerca

però, il programma che desidero controllare è basato tutto su tali controlli

verloc
13-03-2003, 18:22
Il microscopio elettr. a scansione magn.non costa molto: 6000-7000 $

se però lo interfacci da te al computer con un programma apposta(mi pare di ricordare).Altrimenti costa un sacco di soldi.

In genere si fa una copia del disco(se non se lo "possono"portare) con una lamina d'oro.Ed esaminano bit per bit il tuo disco comodamente a casa.

Per il monitor è roba che hanno solo i "servizi" che io sappia.
Non ti saprei dire dove comprarli.

Il problema è che per usarli devi essere quasi un genio :)

Cerca "Peter Guttmann" (non ricordo se si scrive così)
E' una persona molto gentile,a me ha risposto una volta che gli chiesi una cosa.

E' lui che ha dimostrato statisticamente che per una cancellazione sicura ci vogliono 35 passaggi .

misterx
18-03-2003, 19:54
ho risolto grazie