[sr-dev] New Kamailio module Obfuscate

Muhammad Shahzad shaheryarkh at gmail.com
Fri Aug 8 13:37:25 CEST 2014


humm, original function must have got lost while moving the code to corex.
Anyways, lets just remove this. I send you new patch. Is there anything
else need to be changed/removed etc.?

Thank you.




On Fri, Aug 8, 2014 at 4:31 PM, Daniel-Constantin Mierla <miconda at gmail.com>
wrote:

>
> Here is the new function you added:
>
> +int pv_get_raw_msg(sip_msg_t *msg, pv_param_t *param,
> +	pv_value_t *res)
> +{
> +    str sb;
> +    if(msg==NULL || res==NULL)
> +        return -1;
> +    sb.s = msg->buf;
> +    sb.len = msg->len;
> +    return pv_get_strval(msg, param, res, &sb);
> +}
>
> And next is the existing function for $mb:
>
> int pv_get_msg_buf(struct sip_msg *msg, pv_param_t *param,
>         pv_value_t *res)
> {
>     str s;
>     if(msg==NULL)
>         return -1;
>
>     s.s = msg->buf;
>     s.len = msg->len;
>     return pv_get_strval(msg, param, res, &s);
> }
>
> They are the same apart of variables, so no matter where they will be used
> (before or after event route processing), they point to the same buffer,
> therefore they will return the same.
>
> Cheers,
> Daniel
>
>
> On 08/08/14 12:23, Muhammad Shahzad wrote:
>
>  humm, it is suppose to contain the original message that was feed to
> event_route[network:msg], it would be same as $mb till this route changes
> the contents of it stores the new contents in $mb, then the $mb and
> $raw_msg would contain different contents (original vs modified), this may
> be useful in other routes, such as error_route or local_route e.g. for
> comparison etc.
>
>  Of course, you can remove this variable, since i don't have any concrete
> use of it in my mind (other then comparing any changes to message were done
> by event_route[network:msg] in other routes).
>
>  Thank you.
>
>
>
>
> On Fri, Aug 8, 2014 at 11:07 AM, Daniel-Constantin Mierla <
> miconda at gmail.com> wrote:
>
>>  I see that the code introduces a new variable $raw_msg. It looks like
>> being message buffer which is returned by $mb, thus redundant.
>>
>>
>> Cheers,
>> Daniel
>>
>> On 05/08/14 12:06, Muhammad Shahzad wrote:
>>
>>  yup, i always download kamailio from official repo mentioned here,
>>
>> http://www.kamailio.org/wiki/install/devel/git
>>
>>  Thank you.
>>
>>
>>
>>
>> On Tue, Aug 5, 2014 at 3:03 PM, Daniel-Constantin Mierla <
>> miconda at gmail.com> wrote:
>>
>>>
>>> On 05/08/14 11:55, Muhammad Shahzad wrote:
>>>
>>>  OK, created the patch finally...
>>>
>>>
>>> http://webrtc.voip-demos.com/0001-added-support-for-network-io-intercept.patch
>>>
>>>
>>>  I will look over it and push it to the repository if everything is ok.
>>>
>>>
>>>
>>>  I had to add all file i wanted to include in the commit using "git
>>> add", even the ones that are already included in git repo, e.g. corex.xml
>>> and corex_mod.c.
>>>
>>>  Strange, I never had to do it -- did you clone the git repository from
>>> sip-router.org?
>>>
>>>
>>>  I will just let you know i hit my head on wall just 17 times to make it
>>> work. :-(
>>>
>>>  Hopefully it was facebook wall :-)
>>>
>>> Daniel
>>>
>>>
>>>
>>>  Thank you.
>>>
>>>
>>>
>>>
>>> On Tue, Aug 5, 2014 at 2:40 PM, Daniel-Constantin Mierla <
>>> miconda at gmail.com> wrote:
>>>
>>>>  You should use:
>>>>
>>>> git format-patch -1 <sha>
>>>>
>>>> The <sha> in your case appears to be f415b0c . If it is last commit,
>>>> should work with:
>>>>
>>>> git format-patch -1 HEAD
>>>>
>>>> Cheers,
>>>> Daniel
>>>>
>>>>
>>>> On 05/08/14 11:25, Muhammad Shahzad wrote:
>>>>
>>>>   These commands do not seem to work for me. Can you please do the
>>>> patch?
>>>>
>>>>  1. adding files work,
>>>>
>>>> git add modules/corex/corex_nio.c modules/corex/corex_nio.h
>>>>
>>>> git status
>>>> # On branch master
>>>> # Changes to be committed:
>>>> #   (use "git reset HEAD <file>..." to unstage)
>>>> #
>>>> #    new file:   modules/corex/corex_nio.c
>>>> #    new file:   modules/corex/corex_nio.h
>>>> #
>>>> # Changes not staged for commit:
>>>> #   (use "git add <file>..." to update what will be committed)
>>>> #   (use "git checkout -- <file>..." to discard changes in working
>>>> directory)
>>>> #
>>>> #    modified:   modules/corex/README
>>>> #    modified:   modules/corex/corex_mod.c
>>>> #    modified:   modules/corex/doc/corex.xml
>>>> #    modified:   modules/corex/doc/corex_admin.xml
>>>> #
>>>>
>>>>  2. making commit seems to work,
>>>>
>>>> git commit -m "added support for network io intercept."
>>>> [master f415b0c] added support for network io intercept.
>>>>  2 files changed, 268 insertions(+)
>>>>  create mode 100644 modules/corex/corex_nio.c
>>>>  create mode 100644 modules/corex/corex_nio.h
>>>>
>>>>  3. git format-patch does not work,
>>>>
>>>> git format-patch
>>>>  [no-output]
>>>>
>>>>  4. Also tried,
>>>>
>>>> git format-patch master --stdout
>>>>  [no-output]
>>>>
>>>> git format-patch master --stdout > /tmp/nio.patch
>>>> [no-output]
>>>>
>>>>
>>>>  I don't know what is wrong, i have git version 1.7.10.4 on debian
>>>> wheezy.
>>>>
>>>> i miss subversion so badly...
>>>>
>>>>  Thank you.
>>>>
>>>>
>>>>
>>>>
>>>> On Tue, Aug 5, 2014 at 1:26 PM, Daniel-Constantin Mierla <
>>>> miconda at gmail.com> wrote:
>>>>
>>>>>  Can you do a commit on your local git clone and send the patch? It is
>>>>> easier to review the changes. Practically use:
>>>>>
>>>>> - git add -- to add new files
>>>>> - git commit -- to commit changes
>>>>> - git format-patch -- to get the commit in a file
>>>>>
>>>>> Cheers,
>>>>> Daniel
>>>>>
>>>>>
>>>>> On 05/08/14 01:14, Muhammad Shahzad wrote:
>>>>>
>>>>>  Done all changes as you suggested.
>>>>>
>>>>>  1. The code is embedded in corex module. Two new files added named,
>>>>> corex_nio.h and corex_nio.c. Some minor changes to corex_mod.c to call the
>>>>> methods defined in corex_nio.h.
>>>>>  2. Event route name changed to event_route[network:msg].
>>>>>  3. function name changed from is_msg_obfuscated to is_incoming.
>>>>>  4. one additional module parameter is added, named
>>>>> network_io_intercept, to enable disable the whole functionality. (default
>>>>> is disabled)
>>>>>  5. The README file and doc folder is updated with relevant
>>>>> documentation, examples and use cases etc.
>>>>>
>>>>> The code is available for review and download at,
>>>>>
>>>>> http://webrtc.voip-demos.com/corex.tbz2
>>>>>
>>>>>  Regarding the actual encryption / compression etc., i am planning to
>>>>> add some example PERL / LUA scripts later on.
>>>>>
>>>>>  Thank you.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Aug 4, 2014 at 8:19 PM, Muhammad Shahzad <
>>>>> shaheryarkh at gmail.com> wrote:
>>>>>
>>>>>>  Thank you for your valuable suggestions, i appreciate it.
>>>>>>
>>>>>> I agree about module name, in fact a couple friends have already sent
>>>>>> me email privately suggesting the same. May be something like
>>>>>> "nio_intercept" would be better, since module only intercepts the network
>>>>>> in/output and leaves it to script writer what to do with it.
>>>>>>
>>>>>>  Regarding embedding in corex, that is interesting, however i need to
>>>>>> go through its code to understand it a bit and then attempt to embed it.
>>>>>> Later on, i will create separate module which import this functionality
>>>>>> from corex and do specific tasks such as compression and faking http etc.
>>>>>>
>>>>>>  There is a good progress on doubango SDK side as well and at least
>>>>>> idoubs would be ready soon (7 to 10 days approx). Then mobile voip
>>>>>> developers can fully test this functionality at both ends.
>>>>>>
>>>>>>  Anyways let me look at corex module and see if and how can i embed
>>>>>> this. In the meantime more suggestions and comments on this are warmly
>>>>>> welcome from everyone.
>>>>>>
>>>>>> Thank you.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, Aug 4, 2014 at 7:55 PM, Daniel-Constantin Mierla <
>>>>>> miconda at gmail.com> wrote:
>>>>>>
>>>>>>> Hello,
>>>>>>>
>>>>>>> I looked at the code and my conclusion was that the name is a bit
>>>>>>> confusing.
>>>>>>>
>>>>>>> While indeed you can do obfuscation using some embedded language or
>>>>>>> other meanings from the config file, the module itself doesn't do anything
>>>>>>> related. It executes an event route for network packet in/out.
>>>>>>>
>>>>>>> Such functionaly is of course useful, just to remind the given
>>>>>>> example with obfuscation. But I think a better name to reflect the
>>>>>>> behaviour should be given.
>>>>>>>
>>>>>>> Maybe obfuscate should be a module that implement some algorithms
>>>>>>> for obfuscations, like you mentions:
>>>>>>> - simply compressing (gz)
>>>>>>> - compressing and encapsulation as body in a http request/reply
>>>>>>> - itv
>>>>>>>
>>>>>>> My proposal would be:
>>>>>>> - either rename the module or embed in another module (e.g., corex)
>>>>>>> what was developed for these event route execution. The event route name
>>>>>>> should be related to network reception/transmission (e.g., network:msg).
>>>>>>> Also the is_obfuscated_msg() should be something like is_incoming()
>>>>>>> - have a new module obfuscate to implement some algorithm as proof
>>>>>>> of concept (e.g., gzip -- i guess plenty of code from gzcompress module is
>>>>>>> very useful just to take from there). Then others may contribute more, as
>>>>>>> they have new ideas or from what you listed (http ecapsulation is at least
>>>>>>> interesting, considering many allow port 80 and inspect for http).
>>>>>>>
>>>>>>> Of course, these are my opinions, so the discussion can go on for
>>>>>>> deciding on how to proceed.
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Daniel
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 02/08/14 23:57, Muhammad Shahzad wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> As already discussed in detail in following email thread,
>>>>>>>>
>>>>>>>>
>>>>>>>> https://www.mail-archive.com/sr-users@lists.sip-router.org/msg19922.html
>>>>>>>>
>>>>>>>> The new Kamailio module obfuscate is ready for testing and can be
>>>>>>>> downloaded at,
>>>>>>>>
>>>>>>>> http://webrtc.voip-demos.com/obfuscate.tbz2
>>>>>>>>
>>>>>>>> It contains full code, with documentation and usage scenarios etc.
>>>>>>>>
>>>>>>>> Adding Kamailio dev team, can you guys review the code and add this
>>>>>>>> module to Kamailio trunk if possible? I will be responsible for its
>>>>>>>> maintenance and bug fixes etc. if any.
>>>>>>>>
>>>>>>>> Thank you.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>   --
>>>>>>> Daniel-Constantin Mierla - http://www.asipto.com
>>>>>>> http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>> Daniel-Constantin Mierla - http://www.asipto.comhttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
>>>>>
>>>>>
>>>>
>>>> --
>>>> Daniel-Constantin Mierla - http://www.asipto.comhttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
>>>>
>>>>
>>>
>>> --
>>> Daniel-Constantin Mierla - http://www.asipto.comhttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
>>>
>>>
>>
>>  --
>> Daniel-Constantin Mierla
>> http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
>>
>> Next Kamailio Advanced Trainings 2014 - http://www.asipto.com
>> Sep 22-25, Berlin, Germany ::: Oct 15-17, San Francisco, USA
>>
>>
>
> --
> Daniel-Constantin Mierlahttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
> Next Kamailio Advanced Trainings 2014 - http://www.asipto.com
> Sep 22-25, Berlin, Germany ::: Oct 15-17, San Francisco, USA
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20140808/ca1aec8d/attachment-0001.html>


More information about the sr-dev mailing list