CCSDS_study project
This commit is contained in:
67
netzob-030/lib/includes/Interface.h
Normal file
67
netzob-030/lib/includes/Interface.h
Normal file
@@ -0,0 +1,67 @@
|
||||
// -*- coding: utf-8 -*-
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| 01001110 01100101 01110100 01111010 01101111 01100010 |
|
||||
//| |
|
||||
//| Netzob : Inferring communication protocols |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Copyright (C) 2011-2017 Georges Bossert and Frédéric Guihéry |
|
||||
//| This program is free software: you can redistribute it and/or modify |
|
||||
//| it under the terms of the GNU General Public License as published by |
|
||||
//| the Free Software Foundation, either version 3 of the License, or |
|
||||
//| (at your option) any later version. |
|
||||
//| |
|
||||
//| This program is distributed in the hope that it will be useful, |
|
||||
//| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
//| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
//| GNU General Public License for more details. |
|
||||
//| |
|
||||
//| You should have received a copy of the GNU General Public License |
|
||||
//| along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| @url : http://www.netzob.org |
|
||||
//| @contact : contact@netzob.org |
|
||||
//| @sponsors : Amossys, http://www.amossys.fr |
|
||||
//| Supélec, http://www.rennes.supelec.fr/ren/rd/cidre/ |
|
||||
//+---------------------------------------------------------------------------+
|
||||
#ifndef Interface_H
|
||||
#define Interface_H
|
||||
#include "commonLib.h"
|
||||
#include "commonPythonLib.h"
|
||||
|
||||
|
||||
/**
|
||||
serializeMessage:
|
||||
|
||||
This function transform the provided t_message into a Data Transfert Object
|
||||
using PyObject.
|
||||
@param message: the message to serialize
|
||||
@return a PyObject * which represents the provided message
|
||||
*/
|
||||
PyObject * serializeMessage(t_message * message);
|
||||
|
||||
/**
|
||||
SerializeSemanticTags:
|
||||
|
||||
This function transforme the provided tags into a string
|
||||
@param serializedTags: a pointer to a not yet allocated string for the result
|
||||
@param tags: the semantic tags to parse and transform
|
||||
@param nbSemanticTags: the number of semantic tags in tags
|
||||
@return unsigned int: the number of tags in the result
|
||||
**/
|
||||
unsigned int serializeSemanticTags(char ** serializedTags, t_semanticTag ** tags, unsigned int nbSemanticTags);
|
||||
|
||||
unsigned int deserializeMessages(t_group *, char *, unsigned char *, unsigned int, Bool);
|
||||
unsigned int deserializeGroups(t_groups *, char *, unsigned char *, int, Bool);
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| hexdump : for debug purposes
|
||||
//+---------------------------------------------------------------------------+
|
||||
void hexdump(unsigned char *bug, int dlen);
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| dumpMessage : for debug purposes
|
||||
//+---------------------------------------------------------------------------+
|
||||
void dumpMessage(t_message message);
|
||||
|
||||
#endif
|
||||
74
netzob-030/lib/includes/Needleman.h
Normal file
74
netzob-030/lib/includes/Needleman.h
Normal file
@@ -0,0 +1,74 @@
|
||||
// -*- coding: utf-8 -*-
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| 01001110 01100101 01110100 01111010 01101111 01100010 |
|
||||
//| |
|
||||
//| Netzob : Inferring communication protocols |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Copyright (C) 2011-2017 Georges Bossert and Frédéric Guihéry |
|
||||
//| This program is free software: you can redistribute it and/or modify |
|
||||
//| it under the terms of the GNU General Public License as published by |
|
||||
//| the Free Software Foundation, either version 3 of the License, or |
|
||||
//| (at your option) any later version. |
|
||||
//| |
|
||||
//| This program is distributed in the hope that it will be useful, |
|
||||
//| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
//| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
//| GNU General Public License for more details. |
|
||||
//| |
|
||||
//| You should have received a copy of the GNU General Public License |
|
||||
//| along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| @url : http://www.netzob.org |
|
||||
//| @contact : contact@netzob.org |
|
||||
//| @sponsors : Amossys, http://www.amossys.fr |
|
||||
//| Supélec, http://www.rennes.supelec.fr/ren/rd/cidre/ |
|
||||
//+---------------------------------------------------------------------------+
|
||||
|
||||
#ifndef Needleman_H
|
||||
#define Needleman_H
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Imports
|
||||
//+---------------------------------------------------------------------------+
|
||||
//Check if have compile with -DCCALLFORDEBUG option (means we want to analyse the C program without python modules"
|
||||
#ifndef CCALLFORDEBUG
|
||||
#include "libInterface.h" //only needed for the callback status
|
||||
#else
|
||||
#include "Interface.h"
|
||||
#endif
|
||||
#include "commonLib.h"
|
||||
#include <math.h>
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| alignMessages : align a group of messages and get their common regex
|
||||
//+---------------------------------------------------------------------------+
|
||||
void alignMessages(t_message * resMessage, Bool doInternalSlick, unsigned int nbMessages, t_message * messages, Bool debugMode);
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| alignTwoMessages : align 2 messages and get common regex
|
||||
//+---------------------------------------------------------------------------+
|
||||
char* alignTwoMessages(t_message * resMessage, Bool doInternalSlick, t_message * message1, t_message * message2, Bool debugMode);
|
||||
|
||||
/*!
|
||||
* @function getSimilarityScore
|
||||
* @abstract Computes the similarity score of (message1[i], message2[j])
|
||||
* @discussion This function replaces the old MATCH and MISMATCH score and returns a semantic score
|
||||
*/
|
||||
short int getSimilarityScore(t_message * message1, t_message * message2, unsigned int i, unsigned j);
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Scores : functions for their computations
|
||||
//+---------------------------------------------------------------------------+
|
||||
float getScoreRatio(t_message *);
|
||||
float getScoreDynSize(unsigned int, unsigned int);
|
||||
float computeDistance(t_score *);
|
||||
|
||||
/*!
|
||||
* @function displayMessage
|
||||
* @abstract Display in the console the content of specified message (its data and attributes)
|
||||
* @param the message to display
|
||||
*/
|
||||
void displayMessage(t_message *);
|
||||
|
||||
#endif
|
||||
48
netzob-030/lib/includes/Py_lib/commonPythonLib.h
Normal file
48
netzob-030/lib/includes/Py_lib/commonPythonLib.h
Normal file
@@ -0,0 +1,48 @@
|
||||
// -*- coding: utf-8 -*-
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| 01001110 01100101 01110100 01111010 01101111 01100010 |
|
||||
//| |
|
||||
//| Netzob : Inferring communication protocols |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Copyright (C) 2011-2017 Georges Bossert and Frédéric Guihéry |
|
||||
//| This program is free software: you can redistribute it and/or modify |
|
||||
//| it under the terms of the GNU General Public License as published by |
|
||||
//| the Free Software Foundation, either version 3 of the License, or |
|
||||
//| (at your option) any later version. |
|
||||
//| |
|
||||
//| This program is distributed in the hope that it will be useful, |
|
||||
//| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
//| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
//| GNU General Public License for more details. |
|
||||
//| |
|
||||
//| You should have received a copy of the GNU General Public License |
|
||||
//| along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| @url : http://www.netzob.org |
|
||||
//| @contact : contact@netzob.org |
|
||||
//| @sponsors : Amossys, http://www.amossys.fr |
|
||||
//| Supélec, http://www.rennes.supelec.fr/ren/rd/cidre/ |
|
||||
//+---------------------------------------------------------------------------+
|
||||
#ifndef commonPythonLib_H
|
||||
#define commonPythonLib_H
|
||||
|
||||
#ifndef PY_SSIZE_T_CLEAN
|
||||
#define PY_SSIZE_T_CLEAN
|
||||
#endif /* PY_SSIZE_T_CLEAN */
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Imports
|
||||
//+---------------------------------------------------------------------------+
|
||||
#include <Python.h>
|
||||
#include "factory.h"
|
||||
|
||||
#define DEFAULT_BID "0000000000"
|
||||
#define STR(x) x
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| py_getBID : Returns the unique Binary IDentifier
|
||||
//+---------------------------------------------------------------------------+
|
||||
PyObject * py_getBID(PyObject* self, PyObject *noarg);
|
||||
|
||||
#endif
|
||||
56
netzob-030/lib/includes/Py_lib/libInterface.h
Normal file
56
netzob-030/lib/includes/Py_lib/libInterface.h
Normal file
@@ -0,0 +1,56 @@
|
||||
// -*- coding: utf-8 -*-
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| 01001110 01100101 01110100 01111010 01101111 01100010 |
|
||||
//| |
|
||||
//| Netzob : Inferring communication protocols |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Copyright (C) 2011-2017 Georges Bossert and Frédéric Guihéry |
|
||||
//| This program is free software: you can redistribute it and/or modify |
|
||||
//| it under the terms of the GNU General Public License as published by |
|
||||
//| the Free Software Foundation, either version 3 of the License, or |
|
||||
//| (at your option) any later version. |
|
||||
//| |
|
||||
//| This program is distributed in the hope that it will be useful, |
|
||||
//| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
//| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
//| GNU General Public License for more details. |
|
||||
//| |
|
||||
//| You should have received a copy of the GNU General Public License |
|
||||
//| along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| @url : http://www.netzob.org |
|
||||
//| @contact : contact@netzob.org |
|
||||
//| @sponsors : Amossys, http://www.amossys.fr |
|
||||
//| Supélec, http://www.rennes.supelec.fr/ren/rd/cidre/ |
|
||||
//+---------------------------------------------------------------------------+
|
||||
#ifndef libInterface_H
|
||||
#define libInterface_H
|
||||
#include "commonPythonLib.h"
|
||||
#include "Interface.h"
|
||||
|
||||
|
||||
int callbackIsFinish(void);
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| python_callback : The ref to the python callback function
|
||||
//+---------------------------------------------------------------------------+
|
||||
int callbackStatus(int stage, double percent, char* message, ...);
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| py_deserializeMessages : Python wrapper for deserializeMessages
|
||||
//+---------------------------------------------------------------------------+
|
||||
PyObject* py_deserializeMessages(PyObject* self, PyObject* args);
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| py_deserializeMGroups : Python wrapper for deserializeGroups
|
||||
//+---------------------------------------------------------------------------+
|
||||
PyObject* py_deserializeGroups(PyObject* self, PyObject* args);
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| initLibInterface : Python will use this function to init the module
|
||||
//+---------------------------------------------------------------------------+
|
||||
PyMODINIT_FUNC init_libInterface(void);
|
||||
|
||||
|
||||
#endif
|
||||
54
netzob-030/lib/includes/Py_lib/libNeedleman.h
Normal file
54
netzob-030/lib/includes/Py_lib/libNeedleman.h
Normal file
@@ -0,0 +1,54 @@
|
||||
// -*- coding: utf-8 -*-
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| 01001110 01100101 01110100 01111010 01101111 01100010 |
|
||||
//| |
|
||||
//| Netzob : Inferring communication protocols |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Copyright (C) 2011-2017 Georges Bossert and Frédéric Guihéry |
|
||||
//| This program is free software: you can redistribute it and/or modify |
|
||||
//| it under the terms of the GNU General Public License as published by |
|
||||
//| the Free Software Foundation, either version 3 of the License, or |
|
||||
//| (at your option) any later version. |
|
||||
//| |
|
||||
//| This program is distributed in the hope that it will be useful, |
|
||||
//| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
//| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
//| GNU General Public License for more details. |
|
||||
//| |
|
||||
//| You should have received a copy of the GNU General Public License |
|
||||
//| along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| @url : http://www.netzob.org |
|
||||
//| @contact : contact@netzob.org |
|
||||
//| @sponsors : Amossys, http://www.amossys.fr |
|
||||
//| Supélec, http://www.rennes.supelec.fr/ren/rd/cidre/ |
|
||||
//+---------------------------------------------------------------------------+
|
||||
|
||||
#ifndef libNeedleman_H
|
||||
#define libNeedleman_H
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Imports
|
||||
//+---------------------------------------------------------------------------+
|
||||
#include "commonPythonLib.h"
|
||||
#include "commonLib.h"
|
||||
#include "Needleman.h"
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| py_alignMessages : Python wrapper for alignMessages
|
||||
//+---------------------------------------------------------------------------+
|
||||
PyObject* py_alignMessages(PyObject* self, PyObject* args);
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| py_alignTwoMessages : Python wrapper for alignTwoMessages
|
||||
//+---------------------------------------------------------------------------+
|
||||
PyObject* py_alignTwoMessages(PyObject* self, PyObject* args);
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| initLibNeedleman : Python will use this function to init the module
|
||||
//+---------------------------------------------------------------------------+
|
||||
PyMODINIT_FUNC init_libNeedleman(void);
|
||||
|
||||
|
||||
#endif
|
||||
40
netzob-030/lib/includes/Py_lib/libRelation.h
Normal file
40
netzob-030/lib/includes/Py_lib/libRelation.h
Normal file
@@ -0,0 +1,40 @@
|
||||
// -*- coding: utf-8 -*-
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| 01001110 01100101 01110100 01111010 01101111 01100010 |
|
||||
//| |
|
||||
//| Netzob : Inferring communication protocols |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Copyright (C) 2011-2017 Georges Bossert and Frédéric Guihéry |
|
||||
//| This program is free software: you can redistribute it and/or modify |
|
||||
//| it under the terms of the GNU General Public License as published by |
|
||||
//| the Free Software Foundation, either version 3 of the License, or |
|
||||
//| (at your option) any later version. |
|
||||
//| |
|
||||
//| This program is distributed in the hope that it will be useful, |
|
||||
//| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
//| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
//| GNU General Public License for more details. |
|
||||
//| |
|
||||
//| You should have received a copy of the GNU General Public License |
|
||||
//| along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| @url : http://www.netzob.org |
|
||||
//| @contact : contact@netzob.org |
|
||||
//| @sponsors : Amossys, http://www.amossys.fr |
|
||||
//| Supélec, http://www.rennes.supelec.fr/ren/rd/cidre/ |
|
||||
//+---------------------------------------------------------------------------+
|
||||
|
||||
#ifndef LIBRELATION_H_
|
||||
# define LIBRELATION_H_
|
||||
|
||||
#include "commonPythonLib.h"
|
||||
#include "relation.h"
|
||||
|
||||
/* Initialize the module for Python */
|
||||
PyMODINIT_FUNC init_libRelation(void);
|
||||
|
||||
static PyObject* py_find(PyObject* self, PyObject* args);
|
||||
static PyObject* create_python_dm(struct relation_datamodel*);
|
||||
|
||||
#endif /* LIBRELATION_H_ */
|
||||
49
netzob-030/lib/includes/Py_lib/libScoreComputation.h
Normal file
49
netzob-030/lib/includes/Py_lib/libScoreComputation.h
Normal file
@@ -0,0 +1,49 @@
|
||||
// -*- coding: utf-8 -*-
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| 01001110 01100101 01110100 01111010 01101111 01100010 |
|
||||
//| |
|
||||
//| Netzob : Inferring communication protocols |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Copyright (C) 2011-2017 Georges Bossert and Frédéric Guihéry |
|
||||
//| This program is free software: you can redistribute it and/or modify |
|
||||
//| it under the terms of the GNU General Public License as published by |
|
||||
//| the Free Software Foundation, either version 3 of the License, or |
|
||||
//| (at your option) any later version. |
|
||||
//| |
|
||||
//| This program is distributed in the hope that it will be useful, |
|
||||
//| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
//| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
//| GNU General Public License for more details. |
|
||||
//| |
|
||||
//| You should have received a copy of the GNU General Public License |
|
||||
//| along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| @url : http://www.netzob.org |
|
||||
//| @contact : contact@netzob.org |
|
||||
//| @sponsors : Amossys, http://www.amossys.fr |
|
||||
//| Supélec, http://www.rennes.supelec.fr/ren/rd/cidre/ |
|
||||
//+---------------------------------------------------------------------------+
|
||||
|
||||
#ifndef libScoreComputation_H
|
||||
#define libScoreComputation_H
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Imports
|
||||
//+---------------------------------------------------------------------------+
|
||||
|
||||
#include "commonPythonLib.h"
|
||||
#include "commonLib.h"
|
||||
#include "scoreComputation.h"
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| py_computeSimilarityMatrix : Python wrapper for computeSimilarityMatrix
|
||||
//+---------------------------------------------------------------------------+
|
||||
PyObject* py_computeSimilarityMatrix(PyObject* self, PyObject* args);
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| initLibNeedleman : Python will use this function to init the module
|
||||
//+---------------------------------------------------------------------------+
|
||||
PyMODINIT_FUNC init_libScoreComputation(void);
|
||||
|
||||
#endif
|
||||
115
netzob-030/lib/includes/clusterBySnappy.h
Normal file
115
netzob-030/lib/includes/clusterBySnappy.h
Normal file
@@ -0,0 +1,115 @@
|
||||
// -*- coding: utf-8 -*-
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| 01001110 01100101 01110100 01111010 01101111 01100010 |
|
||||
//| |
|
||||
//| Netzob : Inferring communication protocols |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Copyright (C) 2011-2017 Georges Bossert and Frédéric Guihéry |
|
||||
//| This program is free software: you can redistribute it and/or modify |
|
||||
//| it under the terms of the GNU General Public License as published by |
|
||||
//| the Free Software Foundation, either version 3 of the License, or |
|
||||
//| (at your option) any later version. |
|
||||
//| |
|
||||
//| This program is distributed in the hope that it will be useful, |
|
||||
//| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
//| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
//| GNU General Public License for more details. |
|
||||
//| |
|
||||
//| You should have received a copy of the GNU General Public License |
|
||||
//| along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| @url : http://www.netzob.org |
|
||||
//| @contact : contact@netzob.org |
|
||||
//| @sponsors : Amossys, http://www.amossys.fr |
|
||||
//| Supélec, http://www.rennes.supelec.fr/ren/rd/cidre/ |
|
||||
//+---------------------------------------------------------------------------+
|
||||
#ifndef CLUSTERBYSNAPPY_H
|
||||
#define CLUSTERBYSNAPPY_H
|
||||
|
||||
#include <snappy-c.h>
|
||||
#include "libNeedleman.h"
|
||||
|
||||
float computeScore(t_message msg1,t_message msg2)
|
||||
{
|
||||
unsigned char * concat;
|
||||
unsigned char * output1;
|
||||
unsigned char * output2;
|
||||
unsigned char * output3;
|
||||
size_t output_length1;
|
||||
size_t output_length2;
|
||||
size_t output_length3;
|
||||
int max = 0;
|
||||
int min = 0;
|
||||
float result = 0.0;
|
||||
|
||||
//printf("Step1\n");
|
||||
concat = (unsigned char *) malloc ((msg1.len+msg2.len)*sizeof(unsigned char));
|
||||
memset(concat,'\0',msg1.len+msg2.len);
|
||||
memcpy(concat,msg1.message,msg1.len);
|
||||
memcpy(concat+msg1.len,msg2.message,msg2.len);
|
||||
int i;
|
||||
/*for(i=0;i<msg1.len+msg2.len;++i){
|
||||
//////printf("%02x",concat[i]);
|
||||
}
|
||||
//////printf("\n");
|
||||
for(i=0;i<msg1.len;++i){
|
||||
////printf("%02x",msg1.message[i]);
|
||||
}
|
||||
////printf("\n");
|
||||
for(i=0;i<msg2.len;++i){
|
||||
////printf("%02x",msg2.message[i]);
|
||||
}*/
|
||||
////printf("\n");
|
||||
//printf("Step2\n");
|
||||
output_length1 = snappy_max_compressed_length(msg1.len+msg2.len);
|
||||
output1 = malloc(output_length1*sizeof(unsigned char));
|
||||
memset(output1,'\0',output_length1);
|
||||
|
||||
//printf("Step3 \n");
|
||||
output_length2 = snappy_max_compressed_length(msg1.len);
|
||||
output2 = malloc(output_length2*sizeof(unsigned char));
|
||||
memset(output2,'\0',output_length2);
|
||||
|
||||
//printf("Step4\n");
|
||||
output_length3 = snappy_max_compressed_length(msg2.len);
|
||||
output3 = malloc(output_length3*sizeof(unsigned char));
|
||||
memset(output3,'\0',output_length3);
|
||||
|
||||
//printf("Step5\n");
|
||||
int res = snappy_compress(concat,msg1.len+msg2.len,output1,&output_length1);
|
||||
int res2 = snappy_compress(msg1.message,msg1.len,output2,&output_length2);
|
||||
int res3 = snappy_compress(msg2.message,msg2.len,output3,&output_length3);
|
||||
//////printf("Signals %d %d %d\n",res,res2,res3);
|
||||
if(res == SNAPPY_OK)
|
||||
if(res2 == SNAPPY_OK)
|
||||
if(res3 == SNAPPY_OK)
|
||||
{
|
||||
//////printf("Inside \n");
|
||||
max = output_length2 > output_length3? output_length2:output_length3;
|
||||
min = output_length2 <= output_length3? output_length2:output_length3;
|
||||
result = 100.0 * (output_length1 - min) / max;
|
||||
result = result < 100 ? result : 100;
|
||||
////////printf("input_length1 %d \n",msg1.len+msg2.len);
|
||||
////////printf("input_length2 %d \n",msg1.len);
|
||||
////////printf("input_length3 %d \n",msg2.len);
|
||||
////////printf("output_length1 %d \n",output_length1);
|
||||
////////printf("output_length2 %d \n",output_length2);
|
||||
////////printf("output_length3 %d \n",output_length3);
|
||||
////////printf("min %d \n",min);
|
||||
////////printf("max %d \n",max);
|
||||
////////printf("Result %f\n\n\n",result);
|
||||
}
|
||||
|
||||
//printf("Begin Free\n");
|
||||
free(concat);
|
||||
//printf("FREEDOnE 1\n");
|
||||
free(output1);
|
||||
//printf("FREEDOnE 2\n");
|
||||
free(output2);
|
||||
//printf("FREEDOnE 3\n");
|
||||
free(output3);
|
||||
//printf("FREEDOnE\n");
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
98
netzob-030/lib/includes/commonLib.h
Normal file
98
netzob-030/lib/includes/commonLib.h
Normal file
@@ -0,0 +1,98 @@
|
||||
// -*- coding: utf-8 -*-
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| 01001110 01100101 01110100 01111010 01101111 01100010 |
|
||||
//| |
|
||||
//| Netzob : Inferring communication protocols |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Copyright (C) 2011-2017 Georges Bossert and Frédéric Guihéry |
|
||||
//| This program is free software: you can redistribute it and/or modify |
|
||||
//| it under the terms of the GNU General Public License as published by |
|
||||
//| the Free Software Foundation, either version 3 of the License, or |
|
||||
//| (at your option) any later version. |
|
||||
//| |
|
||||
//| This program is distributed in the hope that it will be useful, |
|
||||
//| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
//| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
//| GNU General Public License for more details. |
|
||||
//| |
|
||||
//| You should have received a copy of the GNU General Public License |
|
||||
//| along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| @url : http://www.netzob.org |
|
||||
//| @contact : contact@netzob.org |
|
||||
//| @sponsors : Amossys, http://www.amossys.fr |
|
||||
//| Supélec, http://www.rennes.supelec.fr/ren/rd/cidre/ |
|
||||
//+---------------------------------------------------------------------------+
|
||||
#ifndef commonLib_H
|
||||
#define commonLib_H
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Imports
|
||||
//+---------------------------------------------------------------------------+
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Enumerations and complex types
|
||||
//+---------------------------------------------------------------------------+
|
||||
typedef enum { FALSE, TRUE } Bool;
|
||||
|
||||
// Definition of a score vector
|
||||
typedef struct {
|
||||
float s1;
|
||||
float s2;
|
||||
float s3;
|
||||
float value;
|
||||
} t_score;
|
||||
|
||||
// Definition of a semantic tag
|
||||
typedef struct {
|
||||
char* name;
|
||||
} t_semanticTag;
|
||||
|
||||
// Definition of a message :
|
||||
typedef struct {
|
||||
unsigned int len; // length of the message
|
||||
unsigned char *alignment; // a alignment/message
|
||||
unsigned char *mask; // its mask
|
||||
t_semanticTag **semanticTags; // an array of pointer over semantic tags. One could be attached on each half-byte of the alignment.
|
||||
char* uid;
|
||||
t_score *score;
|
||||
} t_message;
|
||||
|
||||
//Definition of a group of messages
|
||||
typedef struct {
|
||||
unsigned int len; // nb of messages in the group
|
||||
t_message *messages; // a list of messages
|
||||
float * scores; //list of score allready computed.
|
||||
} t_group;
|
||||
|
||||
// Definition of a group of group (a group of symbol)
|
||||
typedef struct {
|
||||
unsigned int len; // nb of group
|
||||
t_group *groups; // a list of group
|
||||
} t_groups;
|
||||
|
||||
typedef struct {
|
||||
int i; // group1 number
|
||||
int j; // group2 number
|
||||
float score; // score of equivalence between group1 and group2
|
||||
} t_equivalentGroup;
|
||||
|
||||
// Cost definitions for the alignment
|
||||
static const short int MATCH = 5;
|
||||
static const short int SEMANTIC_MATCH = 30;
|
||||
static const short int MISMATCH = -5;
|
||||
|
||||
static const short int GAP = 0;
|
||||
static const short int BLEN = 10;
|
||||
// Consts for the definition of a mask
|
||||
static const unsigned char END = 2;
|
||||
static const unsigned char DIFFERENT = 1;
|
||||
static const unsigned char EQUAL = 0;
|
||||
|
||||
#endif
|
||||
63
netzob-030/lib/includes/factory.h
Normal file
63
netzob-030/lib/includes/factory.h
Normal file
@@ -0,0 +1,63 @@
|
||||
// -*- coding: utf-8 -*-
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| 01001110 01100101 01110100 01111010 01101111 01100010 |
|
||||
//| |
|
||||
//| Netzob : Inferring communication protocols |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Copyright (C) 2011-2017 Georges Bossert and Frédéric Guihéry |
|
||||
//| This program is free software: you can redistribute it and/or modify |
|
||||
//| it under the terms of the GNU General Public License as published by |
|
||||
//| the Free Software Foundation, either version 3 of the License, or |
|
||||
//| (at your option) any later version. |
|
||||
//| |
|
||||
//| This program is distributed in the hope that it will be useful, |
|
||||
//| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
//| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
//| GNU General Public License for more details. |
|
||||
//| |
|
||||
//| You should have received a copy of the GNU General Public License |
|
||||
//| along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| @url : http://www.netzob.org |
|
||||
//| @contact : contact@netzob.org |
|
||||
//| @sponsors : Amossys, http://www.amossys.fr |
|
||||
//| Supélec, http://www.rennes.supelec.fr/ren/rd/cidre/ |
|
||||
//+---------------------------------------------------------------------------+
|
||||
|
||||
//Compilation Windows
|
||||
//cl -Fe_libInterface.pyd -Ox -Ot -openmp -LD /I"C:\Python26\include" /I"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include" libInterface.c "C:\Python26\libs\python26.lib" "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\vcomp.lib"
|
||||
#ifndef FACTORY_H
|
||||
#define FACTORY_H
|
||||
#include "commonPythonLib.h"
|
||||
#include "commonLib.h"
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
int parseArgs(PyObject* factobj, ...);
|
||||
|
||||
/**
|
||||
parseLibscoreComputation:
|
||||
|
||||
This function parses the arguments wrapper following a specific format.
|
||||
The definition of this format can be found in the Python function:
|
||||
netzob.Common.C_Extensions.WrapperArgsFactory:WrapperArgsFactory.computeSimilarityMatrix()
|
||||
Once parsed, the wrapper reveal arguments which will be stored in the args parameter.
|
||||
Format:
|
||||
- List<Message> with Message: (alignment, mask, length, uid)
|
||||
*/
|
||||
void parseLibscoreComputation(PyObject* factobj, va_list args);
|
||||
|
||||
void parseLibNeedleman(PyObject* factobj, va_list args);
|
||||
|
||||
/**
|
||||
parseMessage:
|
||||
|
||||
This function parses a python Netzob message to its C representation
|
||||
@param item : the PyObject which host the python representation of the message
|
||||
@param message : the message which should host the python extracted message's information
|
||||
@return void
|
||||
*/
|
||||
void parseMessage(PyObject * item, t_message * message);
|
||||
|
||||
#endif
|
||||
86
netzob-030/lib/includes/relation.h
Normal file
86
netzob-030/lib/includes/relation.h
Normal file
@@ -0,0 +1,86 @@
|
||||
// -*- coding: utf-8 -*-
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| 01001110 01100101 01110100 01111010 01101111 01100010 |
|
||||
//| |
|
||||
//| Netzob : Inferring communication protocols |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Copyright (C) 2011-2017 Georges Bossert and Frédéric Guihéry |
|
||||
//| This program is free software: you can redistribute it and/or modify |
|
||||
//| it under the terms of the GNU General Public License as published by |
|
||||
//| the Free Software Foundation, either version 3 of the License, or |
|
||||
//| (at your option) any later version. |
|
||||
//| |
|
||||
//| This program is distributed in the hope that it will be useful, |
|
||||
//| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
//| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
//| GNU General Public License for more details. |
|
||||
//| |
|
||||
//| You should have received a copy of the GNU General Public License |
|
||||
//| along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| @url : http://www.netzob.org |
|
||||
//| @contact : contact@netzob.org |
|
||||
//| @sponsors : Amossys, http://www.amossys.fr |
|
||||
//| Supélec, http://www.rennes.supelec.fr/ren/rd/cidre/ |
|
||||
//+---------------------------------------------------------------------------+
|
||||
|
||||
#ifndef RELATION_H
|
||||
# define RELATION_H
|
||||
|
||||
# include <stdio.h>
|
||||
/* only request size_t to stddef.h */
|
||||
# define __need_size_t
|
||||
# include <stddef.h>
|
||||
# undef __need_size_t
|
||||
|
||||
struct relation_datamodel {
|
||||
const char* algo_name;
|
||||
struct relation_matches* matches;
|
||||
struct relation_datamodel* next;
|
||||
};
|
||||
|
||||
struct relation_match {
|
||||
unsigned int message_idx;
|
||||
unsigned int cell_ref_idx;
|
||||
unsigned int cell_rel_idx;
|
||||
size_t cell_rel_off;
|
||||
size_t cell_rel_size;
|
||||
};
|
||||
|
||||
struct relation_matches {
|
||||
struct relation_match match;
|
||||
struct relation_matches* next;
|
||||
};
|
||||
|
||||
struct relation_algorithm_operations {
|
||||
const char* name;
|
||||
struct relation_matches* (*find) (const char***, int, int, size_t, size_t);
|
||||
};
|
||||
|
||||
struct relation_algorithm_operations_list {
|
||||
void* pHandle;
|
||||
struct relation_algorithm_operations data;
|
||||
struct relation_algorithm_operations_list* next;
|
||||
};
|
||||
|
||||
void relation_find(struct relation_datamodel**, const char***, size_t, size_t);
|
||||
struct relation_datamodel*
|
||||
append_algo_matches(struct relation_datamodel**,
|
||||
struct relation_algorithm_operations_list*,
|
||||
struct relation_matches*);
|
||||
struct relation_algorithm_operations_list* search_algorithms(void);
|
||||
void clean_algo(struct relation_algorithm_operations_list* algo);
|
||||
|
||||
# ifdef __DEBUG__
|
||||
# define DLOG(...) { \
|
||||
fprintf(stderr, "[%s:%d] ", __FILE__, __LINE__); \
|
||||
DLOG2(__VA_ARGS__); \
|
||||
}
|
||||
# define DLOG2(...) fprintf(stderr, __VA_ARGS__)
|
||||
# else
|
||||
# define DLOG(...)
|
||||
# define DLOG2(...)
|
||||
# endif /* __DEBUG__ */
|
||||
|
||||
#endif /* RELATION_H */
|
||||
46
netzob-030/lib/includes/scoreComputation.h
Normal file
46
netzob-030/lib/includes/scoreComputation.h
Normal file
@@ -0,0 +1,46 @@
|
||||
// -*- coding: utf-8 -*-
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| 01001110 01100101 01110100 01111010 01101111 01100010 |
|
||||
//| |
|
||||
//| Netzob : Inferring communication protocols |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Copyright (C) 2011-2017 Georges Bossert and Frédéric Guihéry |
|
||||
//| This program is free software: you can redistribute it and/or modify |
|
||||
//| it under the terms of the GNU General Public License as published by |
|
||||
//| the Free Software Foundation, either version 3 of the License, or |
|
||||
//| (at your option) any later version. |
|
||||
//| |
|
||||
//| This program is distributed in the hope that it will be useful, |
|
||||
//| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
//| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
//| GNU General Public License for more details. |
|
||||
//| |
|
||||
//| You should have received a copy of the GNU General Public License |
|
||||
//| along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| @url : http://www.netzob.org |
|
||||
//| @contact : contact@netzob.org |
|
||||
//| @sponsors : Amossys, http://www.amossys.fr |
|
||||
//| Supélec, http://www.rennes.supelec.fr/ren/rd/cidre/ |
|
||||
//+---------------------------------------------------------------------------+
|
||||
|
||||
#ifndef scoreComputation_H
|
||||
#define scoreComputation_H
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Imports
|
||||
//+---------------------------------------------------------------------------+
|
||||
//Check if have compile with -DCCALLFORDEBUG option (means we want to analyse the C program without python modules"
|
||||
#ifndef CCALLFORDEBUG
|
||||
#include "libInterface.h"
|
||||
#else
|
||||
#include "Interface.h"
|
||||
#endif
|
||||
#include "commonLib.h"
|
||||
|
||||
#include "Needleman.h"
|
||||
|
||||
void computeSimilarityMatrix(int nbMessage, t_message* messages, Bool debugMode, float** scoreMatrix);
|
||||
|
||||
#endif
|
||||
63
netzob-030/lib/includes/struct.h
Normal file
63
netzob-030/lib/includes/struct.h
Normal file
@@ -0,0 +1,63 @@
|
||||
// -*- coding: utf-8 -*-
|
||||
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| 01001110 01100101 01110100 01111010 01101111 01100010 |
|
||||
//| |
|
||||
//| Netzob : Inferring communication protocols |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| Copyright (C) 2011-2017 Georges Bossert and Frédéric Guihéry |
|
||||
//| This program is free software: you can redistribute it and/or modify |
|
||||
//| it under the terms of the GNU General Public License as published by |
|
||||
//| the Free Software Foundation, either version 3 of the License, or |
|
||||
//| (at your option) any later version. |
|
||||
//| |
|
||||
//| This program is distributed in the hope that it will be useful, |
|
||||
//| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
//| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
//| GNU General Public License for more details. |
|
||||
//| |
|
||||
//| You should have received a copy of the GNU General Public License |
|
||||
//| along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
||||
//+---------------------------------------------------------------------------+
|
||||
//| @url : http://www.netzob.org |
|
||||
//| @contact : contact@netzob.org |
|
||||
//| @sponsors : Amossys, http://www.amossys.fr |
|
||||
//| Supélec, http://www.rennes.supelec.fr/ren/rd/cidre/ |
|
||||
//+---------------------------------------------------------------------------+
|
||||
|
||||
#ifndef Struct_H
|
||||
#define Struct_H
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#define MaxLen 5
|
||||
#define MaxFields 5000
|
||||
|
||||
extern char* mError;
|
||||
|
||||
typedef struct Subfield Subfield;
|
||||
struct Subfield{
|
||||
Subfield *next;
|
||||
char* value;
|
||||
unsigned int offset;
|
||||
unsigned int len;
|
||||
int min;
|
||||
int max;
|
||||
int groupindex;
|
||||
};
|
||||
|
||||
typedef struct Fields Fields;
|
||||
struct Fields{
|
||||
int set;
|
||||
Subfield* subfields;
|
||||
Subfield* lastfields;
|
||||
int subfieldsSize;
|
||||
int isStatic;
|
||||
char* add;
|
||||
char* value;
|
||||
unsigned int len;
|
||||
int min;
|
||||
int max;
|
||||
};
|
||||
#endif
|
||||
Reference in New Issue
Block a user