[Prelude Hybrid IDS] #176: Reading IDMEF Messages from the Manager

Prelude Hybrid IDS <[email protected]>
Newsgroups gmane.comp.security.ids.prelude.devel
Message-ID <[email protected]>
#176: Reading IDMEF Messages from the Manager
-------------------------------+--------------------------------------------
 Reporter:  [email protected]  |       Owner:  yoann            
     Type:  defect             |      Status:  new              
 Priority:  normal             |   Milestone:  Libprelude 0.9.11
Component:  libprelude         |     Version:  0.9              
 Severity:  normal             |    Keywords:                   
-------------------------------+--------------------------------------------
 Hello,

 I'm writing a small sensor to print IDMEF messages to the screen but I was
 wondering how to go about writing the program to do so.

 Here's the code I got so far
 ----------------CODE-------------
 int main(int argc, char **argv) {

         int ret;

         ret = prelude_init(&argc, argv);
         if ( ret < 0 ) {
                         prelude_perror(ret, "unable to initialize the
 prelude library");
                         return -1;
         }

         prelude_client_t *client;

         ret = prelude_client_new(&client, "AcSP");
         if ( ! client ) {
                         prelude_perror(ret, "Unable to create a prelude
 client object");
                         return -1;
         }

         ret = prelude_client_start(client);
         if ( ret < 0 ) {
                    prelude_perror(ret, "Unable to start prelude client");
                    return -1;
         }

         ret = prelude_client_set_flags(client,
 PRELUDE_CLIENT_FLAGS_ASYNC_SEND|PRELUDE_CLIENT_FLAGS_ASYNC_TIMER);
         if ( ret < 0 ) {
                    fprintf(stderr, "Unable to set asynchronous send and
 timer.\n");
                    return -1;
         }

         prelude_msg_t *pmsg;
         idmef_message_t *message;
         prelude_io_t *pio;

     do
         {
         sleep(1);

                 ret = prelude_io_new(&pio);
                 if ( ret < 0 )
                                 return ret;

                 ret = prelude_msg_new(&pmsg, 10, 32, 1, 0);
                 if ( ret < 0 )
                                 return ret;

                 ret = prelude_msg_read(&pmsg, pio);
                 if ( ret < 0 )
                                 return ret;


                 ret = idmef_message_new(&message);
                 if ( ret < 0 )
                                 return ret;
 /*
                 ret = idmef_message_read(message, pmsg);
                 if ( ret < 0 )
                                 return ret;
 */
                 prelude_timer_wake_up();

         } while ( ret > 0 );

         prelude_client_destroy(client,
 PRELUDE_CLIENT_EXIT_STATUS_SUCCESS);

         return 0;
 }
 -------------------END CODE--------------

 But I'm wondering what I'm missing when reading from pio coz after the
 sensor registers I get a Seg Fault.

 An example of how to do so would be most welcome!

 Thanks in advance,

 Samer

-- 
Ticket URL: <https://trac.prelude-ids.org/ticket/176>
Prelude Hybrid IDS <http://www.prelude-ids.org>
The Prelude Hybrid Intrusion Detection System suite

_______________________________________________
Prelude-devel site list
[email protected]
http://www.prelude-ids.org/mailman/listinfo/prelude-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.