[SR-Users] New Kamailio module Obfuscate

Muhammad Shahzad shaheryarkh at gmail.com
Fri Aug 8 14:10:06 CEST 2014


patched updated, as discussed.

http://webrtc.voip-demos.com/0001-added-support-for-network-io-intercept.patch

Thank you.




On Fri, Aug 8, 2014 at 4:37 PM, Muhammad Shahzad <shaheryarkh at gmail.com>
wrote:

> 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-users/attachments/20140808/db09eb02/attachment.html>


More information about the sr-users mailing list