PDA

View Full Version : Richiamare Uno script nascoto


darklook
10-11-2016, 12:39
Ciao a tutti.
Ho creato uno script con javascript che gira su greasymonkey.
Adesso dovrei passare questo script a degli amici cosi che possano utilizzarlo.
Il mio cruccio e che non voglio che loro vedano il mio codice.
Quindi ho pensato di passargli solo uno script che ne vada a richiamare un altro che sarebbe quello vero (l'ho postato su altervista). Questo sono riuscito a realizzarlo con @require "http://www.esempio.it/es.js"

Script Locace Utente======>Script A Remoto (visibile esternamente).

In poche parole greasymonkey scarica lo Script A dal sito, ma non lo aggiunge tra quelli istallati cosi che il codice rimane nascosto agli occhi dei meno esperti.
Solo che nello script su grasymonkey appare il codice @require "http://www.esempio.it/es.js", e quindi basta andare manualmente sul quel link, che è visibile all'esterno, per visualizzare direttamente sul browser quello vero.

E possibile fare in modo lo script che do a loro ne carichi un altro visibile all'esterno e che quest'ultimo a sua volta faccia riferimento ad un altro script all'interno al mio indirizzo remoto invisibile pero all'esterno?

Script Locace Utente======>Script A====>B

Come dovrei realizzarlo o quali sono le alternative?

les2
10-11-2016, 13:52
deve funzionare solo se lanciato da grasemonkey?
se si filtri l'accesso allo script (ci sono vari modi, via .htaccess, via codice che poi serve lo script etc...)

altrimenti se devi fornire il pacchetto l'unica opzione è offuscare, per esperienza ti dico anche che si deoffusca tutto, se ne vale la pena, ma puoi rendere la cosa più difficile.

darklook
10-11-2016, 14:36
si solo su greasymonkey. ok leggo qualcosa su .htaccess.
via codice cosa intendi?

les2
10-11-2016, 14:40
una strada becera è che censisci gli indirizzi ip di gresemonkey e se la richiesta non proviene da lì mostri errore... ;)

darklook
10-11-2016, 14:58
i loro script sono personalizzati quindi ci posso mettere una chiva di riconoscimento.

pero non sto capendo esattamente cosa fare, cioe dove inserire questo codice di riconoscimento

darklook
10-11-2016, 17:08
Ho dato un occhiato a quello che dicevi ma non è il mio caso.

A me serve qualcosa di questo tipo


UTENTE =====>NODO 1======>NODO 2

L'utente può solo vedere e accedere al NODO 1 ma non deve avere modo di accedere al NODO 2 direttamente, quindi non lo deve visualizzare sulla pagine.

Solo il NODO 1 deve poter accedere al NODO 2 che contiene lo script originale e poi passarlo all'UTENTE.
UTENTE che come spiegato prima non può visualizzare questo script su greasymonkey ed è quello che desidero

les2
11-11-2016, 10:12
le due opzioni sono quelle...
;)


altrimenti devi sfruttare eventuali falle e non è questo il posto dove chiedere ;)

sottovento
11-11-2016, 10:40
Potresti pensare di ottenere lo script come una stringa (magari criptata) via ajax.
Quando ti serve lo script, fai una richiesta ajax che deve essere difficile da comprendere da chi cerca di capire il tuo codice e deve contenere variabili globali e variabili di greasemonkey (credo che esistano :D ).
Quando ottieni la risposta da ajax, la decritti e la esegui con una eval().

Ovviamente se qualcuno e' esperto, potrebbe andare a cercare le eval() e stampare il contenuto della stringa che passi per la valutazione.
Per questo motivo potresti confondere le acque
- facendo piu' eval() in posti diversi, magari ciascuna di esse riporta un pezzo dello script (solo qualche funzione), valutabile separatamente;
- facendo ritornare codice "errato" (non nel senso che genera errore - altrimenti fornisci informazioni preziose al nemico - ma che non fa nulla o non fa quello che deve fare) se la richiesta ajax non e' valida.

Si tratta comunque di confondere le acque in modo da rendere molto svantaggiosa l'analisi del tuo codice

les2
11-11-2016, 12:29
ovvero offuscare :)
essendo client side tutto quello che includi o richiami è visibile, con livelli di difficoltà diversi se offuschi

darklook
11-11-2016, 12:31
ovvero offuscare :)
essendo client side tutto quello che includi o richiami è visibile, con livelli di difficoltà diversi se offuschi

mi fai un piccolo esempio non ti seguo.

darklook
11-11-2016, 12:33
Potresti pensare di ottenere lo script come una stringa (magari criptata) via ajax.
Quando ti serve lo script, fai una richiesta ajax che deve essere difficile da comprendere da chi cerca di capire il tuo codice e deve contenere variabili globali e variabili di greasemonkey (credo che esistano :D ).
Quando ottieni la risposta da ajax, la decritti e la esegui con una eval().

Ovviamente se qualcuno e' esperto, potrebbe andare a cercare le eval() e stampare il contenuto della stringa che passi per la valutazione.
Per questo motivo potresti confondere le acque
- facendo piu' eval() in posti diversi, magari ciascuna di esse riporta un pezzo dello script (solo qualche funzione), valutabile separatamente;
- facendo ritornare codice "errato" (non nel senso che genera errore - altrimenti fornisci informazioni preziose al nemico - ma che non fa nulla o non fa quello che deve fare) se la richiesta ajax non e' valida.

Si tratta comunque di confondere le acque in modo da rendere molto svantaggiosa l'analisi del tuo codice

capito quello che dici. se aprono il link vedranno cose incomprensibili. non sono cosi esperti pero da metterci mani. grazie :)

darklook
11-11-2016, 12:38
ovvero offuscare :)
essendo client side tutto quello che includi o richiami è visibile, con livelli di difficoltà diversi se offuschi

io ho dato un occhiata al .htaccess ma non ho capito cosa intendi tu. se l'utente gli serve lo script finale deve comunque avere accesso, quindi i permessi e quindi leggerlo.

les2
11-11-2016, 16:15
1) se offuschi devi semplicemente far non leggere il codice...
eval, deflate, base64 a cascata con codice fuffa per arrivare all'obbiettivo...

2) se invece la libreria la "servi" solo a determinati ip/siti/chiavi etc... rimane visibile ma darà errore o la risposta che vuoi se non proviene da quelli.

ps. puoi fare un pagina di script che faccia questa cosa (sei server side in questo caso ovviamente)

darklook
15-11-2016, 15:20
ho optato per un offuscamento molto efficace :)

les2
16-11-2016, 09:42
su questa frase esce il ragazzino che ho dentro :D
adesso vorrei vedere il codice offuscato e provare a deoffuscarlo :P

71106
23-11-2016, 22:19
Se fosse chiesto a me di offuscare uno script JavaScript, questo è il meglio che potrei fare:

definirei un'ISA per una virtual machine relativamente semplice,
userei Esprima (http://esprima.org/) per compilare lo script verso quell'ISA,
implementerei un interpete JavaScript per l'ISA,
shipperei la versione compilata dello script originale e la farei girare sull'interprete del punto precedente.


N.B.: l'ISA in questione può essere anche qualcosa di simile a Whitespace (https://en.wikipedia.org/wiki/Whitespace_(programming_language)) o Brainfuck (https://en.wikipedia.org/wiki/Brainfuck). Pagherei per vedere qualcuno desiderare ardentemente di interpretare codice Whitespace o Brainfuck. :asd: :asd: