Marco Pontello's Home Page
TrIDScan
This page in English

(Last updated: 03/03/10)
 

TrIDScan - Patterns scanner

TrIDScan è il modulo che si occupa di generare una definizione valida e utilizzabile con TrID, a partire da un insieme di files dello stesso tipo.

La cosa funziona cosi. Volendo "addestrare" TrID a riconoscere dei files Class di Java, occorre semplicemente:

  • Raccogliere un certo numero di files Class (più sono meglio è, ma già con una decina si dovrebbe poter essere tranquilli)
  • Farli esaminare da TrIDScan, indicando il path in cui trovare i files di cui prima
  •  D:\Trid>tridscan f:\test\*.class
    
     TrID/32 - Scan Module v1.56 - (C) 2003-04 By M.Pontello       
    
     Checking files...
     Found 97 matching files
     Header Block Size: 222
     Scanning for patterns...
     Pattern(s) found: 3
     Last Pattern end at offset: 11
     Scanning for raw strings...
     Raw string(s) found: 64
     Pre-filtering strings...
     Phase 1... 100%
     Phase 2... 100%
     Erasing substrings... 100%
     String(s) found: 3
     Writing XML file ...
     Finished!

    La scansione è generalmente molto veloce anche in presenza di molti files da analizzare. In alcuni casi tuttavia, ad esempio se non c'è almeno un files di dimensioni contenute (diciamo sotto i 300/500KB), e il contenuto degli stessi è virtualmente casuale (ad esempio file compressi, MP3, JPEG, etc.) può essere utile disabilitare la scansione delle stringhe caratteristiche con il parametro "/NS". Cosi facendo, la scansione diventa praticamente istantanea anche per un migliaio di files.

    TrIDScan produce un file "newtype.trid.xml" che rappresenta una sorta di "definizione" di quel tipo di files. Quindi, si procede rinominando in modo opportuno il file appena creato (in questo caso, "java-class.trid.xml" potrebbe essere la scelta migliore), e lo si edita in modo da inserire una descrizione concisa del formato che rappresenta e l'estensione standard per quella tipologia di files.

    In questo modo si può creare una raccolta di patterns per una determinata tipologia di files senza dover avere la minima conoscenza della struttura di quei files, senza dover usare un editor HEX per darci un'occhiata, e senza cercare info su header caratteristico, etc.!

    Il file "java-class.trid.xml" appena rinominato avrà quest'aspetto:

    <TrID ver="2.00">
        <Info>
            <FileType>Java Bytecode</FileType>
            <Ext>class</Ext>
            <ExtraInfo>
                <Rem></Rem>
                <RefURL></RefURL>
            </ExtraInfo>
            <User>Marco Pontello</User>
            <E-Mail>marcopon-nospam@myrealbox.com</E-Mail>
        </Info>
        <General>
            <FileNum>80</FileNum>
            <CheckStrings>True</CheckStrings>
            <Date>
                <Year>2003</Year>
                <Month>11</Month>
                <Day>14</Day>
            </Date>
            <Time>
                <Hour>03</Hour>
                <Min>10</Min>
                <Sec>51</Sec>
            </Time>
        </General>
        <FrontBlock>
            <Pattern>
                <Bytes>CAFEBABE00</Bytes>
                <Pos>0</Pos>
            </Pattern>
            <Pattern>
                <Bytes>00</Bytes>
                <Pos>6</Pos>
            </Pattern>
            <Pattern>
                <Bytes>00</Bytes>
                <Pos>11</Pos>
            </Pattern>
        </FrontBlock>
        <GlobalStrings>
            <String>Code</String>
            <String>init</String>
            <String>java</String>
        </GlobalStrings>
    
    
    I campi "user", "e-mail" e "home" serviranno naturalmente per ricoprire di gloria e onori chi vorrà contribuire ad ampliare la base di definizioni di TrID! :-)

    Il default per questi campi può essere impostato nel file "tridscan.cfg.xml", che si presenta cosi:

    <?xml version="1.0"?>
    <settings>
        <User>Marco Pontello</User>
        <E-Mail>marcopon@nospam@myrealbox.com</E-Mail>
        <Home>http://mark0.net</Home>
    </settings>
    
    I campi "Rem" e "RefURL", invece, servono per poter includere rispettivamente un commento o indicare un sito di riferimento o comunque con informazioni utili relativamente al tipo di files in questione. Per esempio, nel caso dei files Class, si potrebbe scrivere qualcosa del genere:
            <ExtraInfo>
                <Rem></Rem>
                <RefURL>http://java.sun.com/</RefURL>
            </ExtraInfo>
    
    
    A questo punto, la nuova definizione si aggiunge all'insieme di quelle già note. Quando TrID viene lanciato, carica tutti i patterns conosciuti (ovvero quelli presenti nella sua directory) e in base a questi analizza il file da identificare.

    E' anche possibile "affinare" una definizione, eseguendo una scansione di alcuni files e indicando a TrIDScan di partire da una definizione già esistente, anzichè da 0. In questo modo sarà come avere a disposizione anche tutti i files che sono già stati analizzati (magari da altre persone). Per utilizzare la funzione di refining, è sufficente aggiungere alla linea di comando anche la definizione da utilizzare come base. La nuova definizione sostituirà la precedente, dopo che quest'ultima sarà stata salvata come "newtype.trid.xml.bak" (se ci fosse la necessità di recuperare lo stato precedente). Per esempio:

     D:\Trid>tridscan c:\dev\programs\*.class java-class.trid.xml

    E' anche possibile forzare il rescan delle stringhe caratteristiche, magari perchè quella che si va a rifinire è una definizione prodotta con una versione di TrIDScan che non le supportava ancora. In questo caso, è sufficente specificare il parametro "/FS".

    Visto che è veramente molto agevole produrre nuove definizioni, spero di poter raccogliere un buon numero di defs in modo che chiunque si trovi ad utilizzare TrID possa contare su una libreria di defs più completa e accurata possibile.
    Quindi date fondo a quella marea di files che vi trovate sparsi negli oscuri meandri dei vostri hard disks e mandate le definzioni all'e-mail che trovate nella pagina dei Contacts!
    Le nuove definizioni verranno aggiunte (o sostituite, se migliorative) a quelle già raccolte e verranno messe a disposizione di tutti da queste pagine.

    N.B. Una nota riguardo alla preparazione dei files per lo scan e all'assegnazione delle descrizioni:
    Siate specifici se potete, generici se dovete!
    Ovvero: se avete a disposizione un tot di files da voi prodotti con, mettiamo, il Turbo Pascal della Borland, con varie versioni dello stesso, chiamateli un qualcosa tipo "EXE DOS Borland Turbo Pascal".
    Se invece sapete per certo che quei 10 files li aveti compilati con il TP 5.5, usate pure "EXE DOS Borland Turbo Pascal V5.5".

    Download

     Win32   TrIDScan v1.56, 28KB ZIP
     Win32   TrIDDefsPack v1.10, 23KB ZIP
       TrID XML def, 666KB RAR (archivio con 3899 definizioni, 03/03/10

     

    Change Log

    TrIDScan/32 v1.56 del 22/12/04:
    + Le stringhe caratteristiche vengono ordinate per lunghezza.

    TrIDScan/32 v1.55 del 20/11/03:
    + Non viene più fatta distinzione tra maiuscole/minuscole per le stringhe caratteristiche.
    + Sistemato un possibile bug nella funzione di refining

    TrIDScan/32 v1.50 del 15/11/03:
    + Rilevazione di stringhe caratteristiche in qualsiasi posizione nei files analizzati - può essere forzata con "/FS" o disabilitata con "/NS"

    TrIDScan/32 v1.23 del 13/08/03:
    + Nuova funzionalità per il refining delle definizioni.
    + Aggiunta la sezione <ExtraInfo> con gli elementi <Rem> (per dei commenti) e <RefURL> (per indicare un URL di riferimento).

    TrIDScan/32 v1.00.1 del 13/07/03:
    + Nelle definizioni generate è stato aggiunto l'elemento <ASCII>, che contiente un dump del pattern a cui si riferisce. Si tratta solo di un hit per l'utente, per agevolare la valutazione e l'editing della def.