Difference between revisions of "Truxton etl send me local file"

From truxwiki.com
Jump to navigation Jump to search
(Created page with "This is used during the development of your exploitation program. It will open the file and put a message into your message queue. =Syntax= <syntaxhighlight lang="C"> void tr...")
 
 
(4 intermediate revisions by the same user not shown)
Line 3: Line 3:
  
 
=Syntax=
 
=Syntax=
<syntaxhighlight lang="C">
+
<source lang="C">
void truxton_etl_send_me_local_file( uint64_t etl_handle, uint16_t file_type, uint16_t calculate_hash, char const * file_name )
+
void truxton_etl_send_me_local_file( uint64_t etl_handle, uint16_t file_type, uint16_t calculate_hash, char const * file_name );
</syntaxhighlight>
+
</source>
  
 
=Parameters=
 
=Parameters=
 
==<code>etl_handle</code>==
 
==<code>etl_handle</code>==
 
 
The handle created by the [[truxton_etl_create]] call.
 
The handle created by the [[truxton_etl_create]] call.
  
 
==<code>file_type</code>==
 
==<code>file_type</code>==
The file will be tagged with this [[File Types Supported | file type]] in the incoming message.
+
The <code>[[Message Bus Messages#file_type|file_type]]</code> field of the incoming [[Message Bus Messages#Message Structure|message]] will be tagged set to this [[File Types Supported|value]].
  
 
==<code>calculate_hash</code>==
 
==<code>calculate_hash</code>==
By default, Truxton will calculate the [https://en.wikipedia.org/wiki/MD5 MD5] hash of the file's contents before sending it to you.
+
By default, Truxton will calculate the [https://en.wikipedia.org/wiki/MD5 MD5] hash of the file's contents to populate the <code>[[Message Bus Messages#md5|md5]]</code> member of the [[Message Bus Messages#Message Structure|message]] before sending it to you.
 
However, this can take some time if you are dealing with large files.
 
However, this can take some time if you are dealing with large files.
If you don't care about the hash value, set <code>calculate_hash</code> to zero and the calculation of the hash will be skipped and a random value sent as the hash.
+
If you don't care about the hash value, set <code>calculate_hash</code> to zero and the hash will be replaced with a random value.
  
 
==<code>file_name</code>==
 
==<code>file_name</code>==
The path to the file to open and send to the message queue.
+
The path to the file to open and send to your message queue.
 +
Ultimately, this value will be stored in the <code>[[Message Bus Messages#depot_filename|depot_filename]]</code> field of the incoming [[Message Bus Messages#Message Structure|message]].
  
 
=Sample=
 
=Sample=
 
+
<source lang="C" highlight="15">
<syntaxhighlight lang="C" highlight="17">
 
 
#include <TruxtonCAPI.h>
 
#include <TruxtonCAPI.h>
  
Line 31: Line 30:
 
{
 
{
 
     char file_id[ 65 ];
 
     char file_id[ 65 ];
 
    int exit_loop = 0;
 
  
 
     uint64_t message = 0;
 
     uint64_t message = 0;
Line 42: Line 39:
  
 
     // FOR TESTING PURPOSES ONLY!
 
     // FOR TESTING PURPOSES ONLY!
     truxton_etl_send_me_local_file( app, Type_MPEG4Video , 0, "C:\\Test Files\\Video\\Fragmented\\Recovered Video.mp4");
+
     truxton_etl_send_me_local_file( app, Type_MPEG4Video , 0, "C:\\Test Files\\Video\\Fragmented\\Recovered Video.mp4" );
 +
 
 +
    // Pause here until we get a message from the "SampleC" message queue
 +
    message = truxton_etl_get_message( app );
  
     while( exit_loop == 0 )
+
     while( message != 0 )
 
     {
 
     {
         message = truxton_etl_get_message( app );
+
         // Do something with the message
  
         if ( message != 0 )
+
         memset( file_id, 0x00, sizeof( file_id ) );
         {
+
         truxton_message_get_file_id( message, file_id, sizeof( file_id ) );
            // Do something with the message
 
  
            memset( file_id, 0x00, sizeof( file_id ) );
+
        printf( "Received file id %s\n", file_id );
            truxton_message_get_file_id( message, file_id, sizeof( file_id ) );
 
  
            printf( "Received file id %s\n", file_id );
+
        truxton_message_destroy( message );
  
            truxton_message_destroy( message );
+
        // Pause here until we get another message from the "SampleC" message queue
         }
+
         message = truxton_etl_get_message( app );
        else
 
        {
 
            exit_loop = 1;
 
        }
 
 
     }
 
     }
  
 
     truxton_etl_destroy( app );
 
     truxton_etl_destroy( app );
 
}
 
}
</syntaxhighlight>
+
</source>

Latest revision as of 11:29, 10 February 2021

This is used during the development of your exploitation program. It will open the file and put a message into your message queue.

Syntax

void truxton_etl_send_me_local_file( uint64_t etl_handle, uint16_t file_type, uint16_t calculate_hash, char const * file_name );

Parameters

etl_handle

The handle created by the truxton_etl_create call.

file_type

The file_type field of the incoming message will be tagged set to this value.

calculate_hash

By default, Truxton will calculate the MD5 hash of the file's contents to populate the md5 member of the message before sending it to you. However, this can take some time if you are dealing with large files. If you don't care about the hash value, set calculate_hash to zero and the hash will be replaced with a random value.

file_name

The path to the file to open and send to your message queue. Ultimately, this value will be stored in the depot_filename field of the incoming message.

Sample

#include <TruxtonCAPI.h>

void main( void )
{
    char file_id[ 65 ];

    uint64_t message = 0;
    uint64_t app = truxton_etl_create();

    truxton_etl_set_application_name( app, "Sample C ETL" );
    truxton_etl_set_depot_type_name( app, "custom" );
    truxton_etl_set_queue_name( app, "SampleC" );

    // FOR TESTING PURPOSES ONLY!
    truxton_etl_send_me_local_file( app, Type_MPEG4Video , 0, "C:\\Test Files\\Video\\Fragmented\\Recovered Video.mp4" );

    // Pause here until we get a message from the "SampleC" message queue
    message = truxton_etl_get_message( app );

    while( message != 0 )
    {
        // Do something with the message

        memset( file_id, 0x00, sizeof( file_id ) );
        truxton_message_get_file_id( message, file_id, sizeof( file_id ) );

        printf( "Received file id %s\n", file_id );

        truxton_message_destroy( message );

        // Pause here until we get another message from the "SampleC" message queue
        message = truxton_etl_get_message( app );
    }

    truxton_etl_destroy( app );
}