Topic: [Batch] Spuntare "annulla blocco" di un eseguibile utilizzando il cmd  (Letto 1898 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Badly

  • python unicellularis
  • *
  • Post: 24
  • Punti reputazione: 0
    • Mostra profilo
Salve a tutti, ultimamente sto smanettando molto con il terminale di windows, vorrei raggiungere un buon livello di autonomia con il cmd, su windows molto spesso l'utenza media lo ignora, ma ritengo che sia importante impararlo al meglio!
Non ho perso tempo a utilizzarlo insieme a python, è molto più semplice e sbrigativo in determinati contesti!. Utilizzo il modulo "subprocess", validissimo, seppur qualche volta non svolge benissimo il suo compito... :sarcastic: ma non sarà questo il succo del mio quesito.
La mia domanda quindi è la seguente:
Utilizzando il cmd, impostare gli attributi di "Sola lettura" e "Nascosto" per un file è semplicissimo.
[codice]attrib -/+r nomefile[/codice]
Ma se invece volessi spuntare in Sicurezza, l'opzione "Annulla blocco", come da immagine:

Che comando (o paramentro...) dovrei utilizzare?
Non ci salto fuori, in giro non è che abbia trovato molto.
Saluti :)
« Ultima modifica: Gennaio 22, 2016, 01:27 da Badly »

Offline pestatasti

  • python neanderthalensis
  • ****
  • Post: 405
  • Punti reputazione: 0
    • Mostra profilo
Non sono ben informato, mi sembra che le opzioni per bloccare l' esecuzione del file possa essere attrib -s oppure modificare l' ACL del file.
Per gli ACL credo che sia solo possibile con NTFS.

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.859
  • Punti reputazione: 9
    • Mostra profilo
No, quel particolare settaggio non ha a che vedere con ACL in windows, è un tag ADS. L'OP può googlare per "ADS" ovvero "alternate data streams" e farsi un'idea di cosa sono...
Per quanto riguarda python... in effetti non ho mai controllato bene, ma non credo che nella libreria standard ci sia qualcosa per manipolare gli ADS. Una velocissima googlata per "python ads" rimanda per esempio a questo modulo https://github.com/RobinDavid/pyADS che non ho idea se funziona, ma promette di essere solo un wrapper sottile intorno alla chiamata di sistema pertinente, per cui... dovrebbe.

Offline pestatasti

  • python neanderthalensis
  • ****
  • Post: 405
  • Punti reputazione: 0
    • Mostra profilo
Ecco, anziché guglare io ho wikipediato :D
Infatti agendo sugli ADS, si determina il tale blocco. Una sorta di cookie.

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.859
  • Punti reputazione: 9
    • Mostra profilo
> Una sorta di cookie.

Uhm, no, per nulla. Un cookie è un file, un ads è uno stream. Un fork, come direbbero nel mondo mac.

Offline Badly

  • python unicellularis
  • *
  • Post: 24
  • Punti reputazione: 0
    • Mostra profilo
No, quel particolare settaggio non ha a che vedere con ACL in windows, è un tag ADS. L'OP può googlare per "ADS" ovvero "alternate data streams" e farsi un'idea di cosa sono...
Per quanto riguarda python... in effetti non ho mai controllato bene, ma non credo che nella libreria standard ci sia qualcosa per manipolare gli ADS. Una velocissima googlata per "python ads" rimanda per esempio a questo modulo https://github.com/RobinDavid/pyADS che non ho idea se funziona, ma promette di essere solo un wrapper sottile intorno alla chiamata di sistema pertinente, per cui... dovrebbe.

quindi una maniera diretta da cmd per impostare "annulla blocco" in un file già bloccato, non esiste?
In ogni caso, ignoravo le ADS, :dont-know: e mi stanno interessando parecchio, il problema è che (e te pareva se a me na cosa andava liscia  :fingers-crossed:), importando la classe ADS da pyads, e copiando spudoratamente l'esempio, riga per riga, mi restituisce nell'IDLE un errore a "ADSStream", perché non è stato dichiarato... e difatti, non lo è stato! Non so neanche cosa sia, la documentazione non cita "ADSStream" se non nell'esempio... :dont-know:

Offline pestatasti

  • python neanderthalensis
  • ****
  • Post: 405
  • Punti reputazione: 0
    • Mostra profilo
Non esiste ADSStream, prova solo con ADS.
Poi magari, per l' effetto desiderato si prova con un remove.

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.859
  • Punti reputazione: 9
    • Mostra profilo
Se gli ADS "ti interessano parecchio", potrebbe essere un buon motivo per studiarseli un po'... leggiti il codice di quel modulo, e scopri che cosa fa e perché... comunque è solo un abbozzo non finito, come vedrai dai ticket aperti (e mai chiusi)... dubito che possa funzionare davvero. Ma forse ci sono altre librerie python che fanno lo stesso lavoro... A parte che, se davvero python supporta la sintassi open("filename:stream"), come scopro per la prima volta leggendo quel codice... sarebbe notevole. Ma dovrei sperimentare (anzi, no: *dovresti* sperimentare). Ovviamente, come tutte le feature os-specific (e soprattutto windows-specific), è perfettamente possibile che il supporto di python sia incompleto/buggato (ah, le ore spese col bug tracker di python a cercare di capire se si possono usare i nomi lunghi dei file...).
Ma prima ancora, scopri come si creano/gestiscono gli ADS con in normali strumenti windows... non so se cmd.exe li supporta bene (dopo tutto, cmd.exe è più vecchio di ntfs), ma powershell sicuramente sì, ci mancherebbe.

Offline Badly

  • python unicellularis
  • *
  • Post: 24
  • Punti reputazione: 0
    • Mostra profilo
Citazione
Non esiste ADSStream, prova solo con ADS.
Poi magari, per l' effetto desiderato si prova con un remove.
Sì, deve essere stata una svista dell'autore  :)

Se gli ADS "ti interessano parecchio", potrebbe essere un buon motivo per studiarseli un po'... leggiti il codice di quel modulo, e scopri che cosa fa e perché... comunque è solo un abbozzo non finito, come vedrai dai ticket aperti (e mai chiusi)... dubito che possa funzionare davvero. Ma forse ci sono altre librerie python che fanno lo stesso lavoro... A parte che, se davvero python supporta la sintassi open("filename:stream"), come scopro per la prima volta leggendo quel codice... sarebbe notevole. Ma dovrei sperimentare (anzi, no: *dovresti* sperimentare). Ovviamente, come tutte le feature os-specific (e soprattutto windows-specific), è perfettamente possibile che il supporto di python sia incompleto/buggato (ah, le ore spese col bug tracker di python a cercare di capire se si possono usare i nomi lunghi dei file...).
Ma prima ancora, scopri come si creano/gestiscono gli ADS con in normali strumenti windows... non so se cmd.exe li supporta bene (dopo tutto, cmd.exe è più vecchio di ntfs), ma powershell sicuramente sì, ci mancherebbe.
Li supporta, ma da vista in poi non si possono avviare con un semplice start, ma bisogna creare un link simbolico.
Ti ringrazio per avermi messo al corrente di questa cosa, approfondirò tutto più avanti.
Comunque, quindi, alla mia domanda iniziale, che poi è anche il motivo vero e iniziale del topic.
Mettere semplicemente la spunta "Annulla blocco" nelle proprietà di un semplicissimo script utilizzando il batch, non è possibile?

Offline pestatasti

  • python neanderthalensis
  • ****
  • Post: 405
  • Punti reputazione: 0
    • Mostra profilo
Mettere semplicemente la spunta "Annulla blocco" nelle proprietà di un semplicissimo script utilizzando il batch, non è possibile?
Se funziona lo script di python allora sì. Addirittura potresti anche aggiungere di andare a ricercare tra i files della cartella quelli che si vuole modificare gli ADS.

Offline Badly

  • python unicellularis
  • *
  • Post: 24
  • Punti reputazione: 0
    • Mostra profilo
Re: [Batch] Spuntare "annulla blocco" di un eseguibile utilizzando il cmd
« Risposta #10 il: Gennaio 23, 2016, 20:10 »
vedrò come fare tutto con il batch, ma per ora in python funziona tutto alla grande!  :ok:
:py:
Grazie mille a tutti ;)
« Ultima modifica: Gennaio 23, 2016, 20:21 da Badly »

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.859
  • Punti reputazione: 9
    • Mostra profilo
Re: [Batch] Spuntare "annulla blocco" di un eseguibile utilizzando il cmd
« Risposta #11 il: Gennaio 23, 2016, 20:51 »
scusa ma cosa vuol dire "fare il batch"? E' una ricetta di cucina?

comunque, sì: il tuo "annulla blocco" corrisponde a un'azione da fare sugli ADS.
Siccome IE (e nota: solo IE, a quanto ne so) applica un tag ADS ai file eseguibili che scarica (per segnalare che sono potenzialmente pericolosi), allora per "annullare il blocco" occorre eliminare quel tag ADS (o, più brutalmente e semplicemente, eliminare *tutti* gli stream ADS). Cosa che (forse) puoi fare con quel modulo python, (forse) puoi fare con altre librerie python, (forse) puoi fare... con python (**), e poi (forse) puoi fare con la shell di cmd.exe (eventualmente invocata da python), e (sicuramente, direi) puoi fare con powershell (eventualmente invocato da python).


(**) è uno degli esperimenti banali che farei subito se fossi in te: dato il supporto non proprio perfetto di python per i dettagli di ntfs, è possibile che, banalmente, utility come shutil.copy non supportino anche la copia degli ADS allegati a un file... quindi forse in python (libreria standard) basta copiare un file per eliminare tutti gli stream attaccati. Non lo so, dico per dire.

« Ultima modifica: Gennaio 23, 2016, 20:54 da RicPol »

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.642
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re: [Batch] Spuntare "annulla blocco" di un eseguibile utilizzando il cmd
« Risposta #12 il: Gennaio 23, 2016, 20:58 »
Uno stralcio di codice per chi fosse interessato?  :angel:

Offline Badly

  • python unicellularis
  • *
  • Post: 24
  • Punti reputazione: 0
    • Mostra profilo
Re: [Batch] Spuntare "annulla blocco" di un eseguibile utilizzando il cmd
« Risposta #13 il: Gennaio 23, 2016, 22:05 »
Uno stralcio di codice per chi fosse interessato?  :angel:
in python o semplicemente da cmd?

scusa ma cosa vuol dire "fare il batch"? E' una ricetta di cucina?

comunque, sì: il tuo "annulla blocco" corrisponde a un'azione da fare sugli ADS.
Siccome IE (e nota: solo IE, a quanto ne so) applica un tag ADS ai file eseguibili che scarica (per segnalare che sono potenzialmente pericolosi), allora per "annullare il blocco" occorre eliminare quel tag ADS (o, più brutalmente e semplicemente, eliminare *tutti* gli stream ADS). Cosa che (forse) puoi fare con quel modulo python, (forse) puoi fare con altre librerie python, (forse) puoi fare... con python (**), e poi (forse) puoi fare con la shell di cmd.exe (eventualmente invocata da python), e (sicuramente, direi) puoi fare con powershell (eventualmente invocato da python).


(**) è uno degli esperimenti banali che farei subito se fossi in te: dato il supporto non proprio perfetto di python per i dettagli di ntfs, è possibile che, banalmente, utility come shutil.copy non supportino anche la copia degli ADS allegati a un file... quindi forse in python (libreria standard) basta copiare un file per eliminare tutti gli stream attaccati. Non lo so, dico per dire.


nessuna ricetta di cucina :), preposizione "CON" ...il batch, UTILIZZANDO il batch, MEDIANTE il batch.
Comunque dici bene, funzionerebbe, e utilizzando un "trick" con il comando CAT del cmd, è possibile fare la stessa cosa che hai detto, quindi sì! Tutto risolto ;)

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.859
  • Punti reputazione: 9
    • Mostra profilo
Re: [Batch] Spuntare "annulla blocco" di un eseguibile utilizzando il cmd
« Risposta #14 il: Gennaio 23, 2016, 22:12 »
@glenn
il link è sopra, si stava guardando questo modulo https://github.com/RobinDavid/pyADS ma davvero, è solo la prima cosa che mi è saltata fuori googlando... e in pratica è solo un proof of concept che funziona a metà... ci sarà anche di meglio...