scapy - fields_desc - add field as offset











up vote
0
down vote

favorite












I'm trying to describe a field as an offset and access it's data



For example:



fields_desc = [LEShortField("structure_size",0),
ByteField("flags",0),
**LEShortField("blob_offset",0)**,
LEFieldLenField("user_name_length", 0),
LEShortField("user_name_maxlength", 0),
**LEIntField("user_name_offset", 0)**]


I need to take the variable blob_offset and add it user_name_offset in order to extract the user name.



How can I do it ?? I didn't find and special variable for it...



Thanks










share|improve this question






















  • what do you want your packet to look like in the end? do you want user_name to also be a field? do you plan on parsing the entire "blob"?
    – AntiMatterDynamite
    16 hours ago










  • yes. I need the user_name as a field. I just don't know where to insert it because it depends on a specific offset...Is it possible?
    – 1337
    16 hours ago















up vote
0
down vote

favorite












I'm trying to describe a field as an offset and access it's data



For example:



fields_desc = [LEShortField("structure_size",0),
ByteField("flags",0),
**LEShortField("blob_offset",0)**,
LEFieldLenField("user_name_length", 0),
LEShortField("user_name_maxlength", 0),
**LEIntField("user_name_offset", 0)**]


I need to take the variable blob_offset and add it user_name_offset in order to extract the user name.



How can I do it ?? I didn't find and special variable for it...



Thanks










share|improve this question






















  • what do you want your packet to look like in the end? do you want user_name to also be a field? do you plan on parsing the entire "blob"?
    – AntiMatterDynamite
    16 hours ago










  • yes. I need the user_name as a field. I just don't know where to insert it because it depends on a specific offset...Is it possible?
    – 1337
    16 hours ago













up vote
0
down vote

favorite









up vote
0
down vote

favorite











I'm trying to describe a field as an offset and access it's data



For example:



fields_desc = [LEShortField("structure_size",0),
ByteField("flags",0),
**LEShortField("blob_offset",0)**,
LEFieldLenField("user_name_length", 0),
LEShortField("user_name_maxlength", 0),
**LEIntField("user_name_offset", 0)**]


I need to take the variable blob_offset and add it user_name_offset in order to extract the user name.



How can I do it ?? I didn't find and special variable for it...



Thanks










share|improve this question













I'm trying to describe a field as an offset and access it's data



For example:



fields_desc = [LEShortField("structure_size",0),
ByteField("flags",0),
**LEShortField("blob_offset",0)**,
LEFieldLenField("user_name_length", 0),
LEShortField("user_name_maxlength", 0),
**LEIntField("user_name_offset", 0)**]


I need to take the variable blob_offset and add it user_name_offset in order to extract the user name.



How can I do it ?? I didn't find and special variable for it...



Thanks







python networking scapy






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 17 hours ago









1337

778




778












  • what do you want your packet to look like in the end? do you want user_name to also be a field? do you plan on parsing the entire "blob"?
    – AntiMatterDynamite
    16 hours ago










  • yes. I need the user_name as a field. I just don't know where to insert it because it depends on a specific offset...Is it possible?
    – 1337
    16 hours ago


















  • what do you want your packet to look like in the end? do you want user_name to also be a field? do you plan on parsing the entire "blob"?
    – AntiMatterDynamite
    16 hours ago










  • yes. I need the user_name as a field. I just don't know where to insert it because it depends on a specific offset...Is it possible?
    – 1337
    16 hours ago
















what do you want your packet to look like in the end? do you want user_name to also be a field? do you plan on parsing the entire "blob"?
– AntiMatterDynamite
16 hours ago




what do you want your packet to look like in the end? do you want user_name to also be a field? do you plan on parsing the entire "blob"?
– AntiMatterDynamite
16 hours ago












yes. I need the user_name as a field. I just don't know where to insert it because it depends on a specific offset...Is it possible?
– 1337
16 hours ago




yes. I need the user_name as a field. I just don't know where to insert it because it depends on a specific offset...Is it possible?
– 1337
16 hours ago












1 Answer
1






active

oldest

votes

















up vote
0
down vote













well you don't exactly say how your packet looks, assuming your "blob" and username are right after the packet you already specified you can try to do something like this:



fields_desc = [LEShortField("structure_size",0),
ByteField("flags",0),
LEFieldLenField("blob_offset",0, length_of="blob_offset_pad", fmt="!H"),
LEFieldLenField("user_name_length", 0, length_of="user_name"),
LEShortField("user_name_maxlength", 0),
LEFieldLenField("user_name_offset", 0, length_of="user_name", fmt="!I"),
StrFixedLenField("blob_offset_pad", 0, length_from = lambda pkt: pkt.blob_offset),
StrFixedLenField("user_name_offset_pad", 0, length_from = lambda pkt: pkt.user_name_offset),
StrFixedLenField("user_name", "", length_from= lambda pkt: pkt.user_name_length)]


again can't really test this because you didn't provide any useful examples






share|improve this answer





















    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














     

    draft saved


    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53371195%2fscapy-fields-desc-add-field-as-offset%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    0
    down vote













    well you don't exactly say how your packet looks, assuming your "blob" and username are right after the packet you already specified you can try to do something like this:



    fields_desc = [LEShortField("structure_size",0),
    ByteField("flags",0),
    LEFieldLenField("blob_offset",0, length_of="blob_offset_pad", fmt="!H"),
    LEFieldLenField("user_name_length", 0, length_of="user_name"),
    LEShortField("user_name_maxlength", 0),
    LEFieldLenField("user_name_offset", 0, length_of="user_name", fmt="!I"),
    StrFixedLenField("blob_offset_pad", 0, length_from = lambda pkt: pkt.blob_offset),
    StrFixedLenField("user_name_offset_pad", 0, length_from = lambda pkt: pkt.user_name_offset),
    StrFixedLenField("user_name", "", length_from= lambda pkt: pkt.user_name_length)]


    again can't really test this because you didn't provide any useful examples






    share|improve this answer

























      up vote
      0
      down vote













      well you don't exactly say how your packet looks, assuming your "blob" and username are right after the packet you already specified you can try to do something like this:



      fields_desc = [LEShortField("structure_size",0),
      ByteField("flags",0),
      LEFieldLenField("blob_offset",0, length_of="blob_offset_pad", fmt="!H"),
      LEFieldLenField("user_name_length", 0, length_of="user_name"),
      LEShortField("user_name_maxlength", 0),
      LEFieldLenField("user_name_offset", 0, length_of="user_name", fmt="!I"),
      StrFixedLenField("blob_offset_pad", 0, length_from = lambda pkt: pkt.blob_offset),
      StrFixedLenField("user_name_offset_pad", 0, length_from = lambda pkt: pkt.user_name_offset),
      StrFixedLenField("user_name", "", length_from= lambda pkt: pkt.user_name_length)]


      again can't really test this because you didn't provide any useful examples






      share|improve this answer























        up vote
        0
        down vote










        up vote
        0
        down vote









        well you don't exactly say how your packet looks, assuming your "blob" and username are right after the packet you already specified you can try to do something like this:



        fields_desc = [LEShortField("structure_size",0),
        ByteField("flags",0),
        LEFieldLenField("blob_offset",0, length_of="blob_offset_pad", fmt="!H"),
        LEFieldLenField("user_name_length", 0, length_of="user_name"),
        LEShortField("user_name_maxlength", 0),
        LEFieldLenField("user_name_offset", 0, length_of="user_name", fmt="!I"),
        StrFixedLenField("blob_offset_pad", 0, length_from = lambda pkt: pkt.blob_offset),
        StrFixedLenField("user_name_offset_pad", 0, length_from = lambda pkt: pkt.user_name_offset),
        StrFixedLenField("user_name", "", length_from= lambda pkt: pkt.user_name_length)]


        again can't really test this because you didn't provide any useful examples






        share|improve this answer












        well you don't exactly say how your packet looks, assuming your "blob" and username are right after the packet you already specified you can try to do something like this:



        fields_desc = [LEShortField("structure_size",0),
        ByteField("flags",0),
        LEFieldLenField("blob_offset",0, length_of="blob_offset_pad", fmt="!H"),
        LEFieldLenField("user_name_length", 0, length_of="user_name"),
        LEShortField("user_name_maxlength", 0),
        LEFieldLenField("user_name_offset", 0, length_of="user_name", fmt="!I"),
        StrFixedLenField("blob_offset_pad", 0, length_from = lambda pkt: pkt.blob_offset),
        StrFixedLenField("user_name_offset_pad", 0, length_from = lambda pkt: pkt.user_name_offset),
        StrFixedLenField("user_name", "", length_from= lambda pkt: pkt.user_name_length)]


        again can't really test this because you didn't provide any useful examples







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 14 hours ago









        AntiMatterDynamite

        828212




        828212






























             

            draft saved


            draft discarded



















































             


            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53371195%2fscapy-fields-desc-add-field-as-offset%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Tonle Sap (See)

            I get strange results when I access the Sqlitedatabase with Unity C# via XAMPP

            Guatemaltekische Davis-Cup-Mannschaft