Decode SQ_FETCHBLOB in Informix-Protocol





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







1















I'm writing a parser for the SQLi-protocol ("turbo") used by Informix. I have most opcodes covered by now, yet SQ_FETCHBLOB I don't have a clue yet. Reverse engineering the driver is difficult since it copies values from its internal state machine, which itself is hard to track. All I know is that SQ_FETCHBLOB is followed by 56 bytes of data, some of which seem to be the BLOB's total size and fetch-offset.



Does anyone have some information on how to decode SQ_FETCHBLOB as used by Informix SQLi ?










share|improve this question





























    1















    I'm writing a parser for the SQLi-protocol ("turbo") used by Informix. I have most opcodes covered by now, yet SQ_FETCHBLOB I don't have a clue yet. Reverse engineering the driver is difficult since it copies values from its internal state machine, which itself is hard to track. All I know is that SQ_FETCHBLOB is followed by 56 bytes of data, some of which seem to be the BLOB's total size and fetch-offset.



    Does anyone have some information on how to decode SQ_FETCHBLOB as used by Informix SQLi ?










    share|improve this question

























      1












      1








      1








      I'm writing a parser for the SQLi-protocol ("turbo") used by Informix. I have most opcodes covered by now, yet SQ_FETCHBLOB I don't have a clue yet. Reverse engineering the driver is difficult since it copies values from its internal state machine, which itself is hard to track. All I know is that SQ_FETCHBLOB is followed by 56 bytes of data, some of which seem to be the BLOB's total size and fetch-offset.



      Does anyone have some information on how to decode SQ_FETCHBLOB as used by Informix SQLi ?










      share|improve this question














      I'm writing a parser for the SQLi-protocol ("turbo") used by Informix. I have most opcodes covered by now, yet SQ_FETCHBLOB I don't have a clue yet. Reverse engineering the driver is difficult since it copies values from its internal state machine, which itself is hard to track. All I know is that SQ_FETCHBLOB is followed by 56 bytes of data, some of which seem to be the BLOB's total size and fetch-offset.



      Does anyone have some information on how to decode SQ_FETCHBLOB as used by Informix SQLi ?







      informix






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 22 '18 at 12:16









      user2722968user2722968

      2,75411637




      2,75411637
























          1 Answer
          1






          active

          oldest

          votes


















          1





          +50









          I can't comment on the specifics of the SQ_FETCHBLOB SQLI packet type but you might want to look at the file $INFORMIXDIR/incl/esql/blob.h which is shipped with Client SDK. This describes the tblob_t data structure which is 56 bytes.






          share|improve this answer


























          • Thanks. Could you drop the struct definition here? The CSDK I have does not include incl/esql or any other place where blob.h is.

            – user2722968
            Nov 25 '18 at 15:47











          • I would probably be breaking all sorts of rules if I posted that structure directly here. The incl/esql directory should be included with all versions of CSDK so if it's not present in your install it may be that you have Informix Connect installed instead.

            – Simon Riddle
            Nov 26 '18 at 9:35











          • I also found the tblob_t structure is listed in some older versions of the Informix Administrator's Guide. For example page 43-60 of the v7 guide (found at ftp.uni-potsdam.de/pub/WWW/netscape/livewire/InformixDoc/…) shows it - note the figure is missing the "long tb_start" element positioned after tb_tblspace (this represents the starting byte).

            – Simon Riddle
            Nov 26 '18 at 9:37











          • Thanks, I'm not sure if those fields are in the same order as they are on the wire, yet this is a start.

            – user2722968
            Nov 26 '18 at 12:38












          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',
          autoActivateHeartbeat: false,
          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%2f53430840%2fdecode-sq-fetchblob-in-informix-protocol%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









          1





          +50









          I can't comment on the specifics of the SQ_FETCHBLOB SQLI packet type but you might want to look at the file $INFORMIXDIR/incl/esql/blob.h which is shipped with Client SDK. This describes the tblob_t data structure which is 56 bytes.






          share|improve this answer


























          • Thanks. Could you drop the struct definition here? The CSDK I have does not include incl/esql or any other place where blob.h is.

            – user2722968
            Nov 25 '18 at 15:47











          • I would probably be breaking all sorts of rules if I posted that structure directly here. The incl/esql directory should be included with all versions of CSDK so if it's not present in your install it may be that you have Informix Connect installed instead.

            – Simon Riddle
            Nov 26 '18 at 9:35











          • I also found the tblob_t structure is listed in some older versions of the Informix Administrator's Guide. For example page 43-60 of the v7 guide (found at ftp.uni-potsdam.de/pub/WWW/netscape/livewire/InformixDoc/…) shows it - note the figure is missing the "long tb_start" element positioned after tb_tblspace (this represents the starting byte).

            – Simon Riddle
            Nov 26 '18 at 9:37











          • Thanks, I'm not sure if those fields are in the same order as they are on the wire, yet this is a start.

            – user2722968
            Nov 26 '18 at 12:38
















          1





          +50









          I can't comment on the specifics of the SQ_FETCHBLOB SQLI packet type but you might want to look at the file $INFORMIXDIR/incl/esql/blob.h which is shipped with Client SDK. This describes the tblob_t data structure which is 56 bytes.






          share|improve this answer


























          • Thanks. Could you drop the struct definition here? The CSDK I have does not include incl/esql or any other place where blob.h is.

            – user2722968
            Nov 25 '18 at 15:47











          • I would probably be breaking all sorts of rules if I posted that structure directly here. The incl/esql directory should be included with all versions of CSDK so if it's not present in your install it may be that you have Informix Connect installed instead.

            – Simon Riddle
            Nov 26 '18 at 9:35











          • I also found the tblob_t structure is listed in some older versions of the Informix Administrator's Guide. For example page 43-60 of the v7 guide (found at ftp.uni-potsdam.de/pub/WWW/netscape/livewire/InformixDoc/…) shows it - note the figure is missing the "long tb_start" element positioned after tb_tblspace (this represents the starting byte).

            – Simon Riddle
            Nov 26 '18 at 9:37











          • Thanks, I'm not sure if those fields are in the same order as they are on the wire, yet this is a start.

            – user2722968
            Nov 26 '18 at 12:38














          1





          +50







          1





          +50



          1




          +50





          I can't comment on the specifics of the SQ_FETCHBLOB SQLI packet type but you might want to look at the file $INFORMIXDIR/incl/esql/blob.h which is shipped with Client SDK. This describes the tblob_t data structure which is 56 bytes.






          share|improve this answer















          I can't comment on the specifics of the SQ_FETCHBLOB SQLI packet type but you might want to look at the file $INFORMIXDIR/incl/esql/blob.h which is shipped with Client SDK. This describes the tblob_t data structure which is 56 bytes.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 23 '18 at 15:06









          user2722968

          2,75411637




          2,75411637










          answered Nov 23 '18 at 12:08









          Simon RiddleSimon Riddle

          38112




          38112













          • Thanks. Could you drop the struct definition here? The CSDK I have does not include incl/esql or any other place where blob.h is.

            – user2722968
            Nov 25 '18 at 15:47











          • I would probably be breaking all sorts of rules if I posted that structure directly here. The incl/esql directory should be included with all versions of CSDK so if it's not present in your install it may be that you have Informix Connect installed instead.

            – Simon Riddle
            Nov 26 '18 at 9:35











          • I also found the tblob_t structure is listed in some older versions of the Informix Administrator's Guide. For example page 43-60 of the v7 guide (found at ftp.uni-potsdam.de/pub/WWW/netscape/livewire/InformixDoc/…) shows it - note the figure is missing the "long tb_start" element positioned after tb_tblspace (this represents the starting byte).

            – Simon Riddle
            Nov 26 '18 at 9:37











          • Thanks, I'm not sure if those fields are in the same order as they are on the wire, yet this is a start.

            – user2722968
            Nov 26 '18 at 12:38



















          • Thanks. Could you drop the struct definition here? The CSDK I have does not include incl/esql or any other place where blob.h is.

            – user2722968
            Nov 25 '18 at 15:47











          • I would probably be breaking all sorts of rules if I posted that structure directly here. The incl/esql directory should be included with all versions of CSDK so if it's not present in your install it may be that you have Informix Connect installed instead.

            – Simon Riddle
            Nov 26 '18 at 9:35











          • I also found the tblob_t structure is listed in some older versions of the Informix Administrator's Guide. For example page 43-60 of the v7 guide (found at ftp.uni-potsdam.de/pub/WWW/netscape/livewire/InformixDoc/…) shows it - note the figure is missing the "long tb_start" element positioned after tb_tblspace (this represents the starting byte).

            – Simon Riddle
            Nov 26 '18 at 9:37











          • Thanks, I'm not sure if those fields are in the same order as they are on the wire, yet this is a start.

            – user2722968
            Nov 26 '18 at 12:38

















          Thanks. Could you drop the struct definition here? The CSDK I have does not include incl/esql or any other place where blob.h is.

          – user2722968
          Nov 25 '18 at 15:47





          Thanks. Could you drop the struct definition here? The CSDK I have does not include incl/esql or any other place where blob.h is.

          – user2722968
          Nov 25 '18 at 15:47













          I would probably be breaking all sorts of rules if I posted that structure directly here. The incl/esql directory should be included with all versions of CSDK so if it's not present in your install it may be that you have Informix Connect installed instead.

          – Simon Riddle
          Nov 26 '18 at 9:35





          I would probably be breaking all sorts of rules if I posted that structure directly here. The incl/esql directory should be included with all versions of CSDK so if it's not present in your install it may be that you have Informix Connect installed instead.

          – Simon Riddle
          Nov 26 '18 at 9:35













          I also found the tblob_t structure is listed in some older versions of the Informix Administrator's Guide. For example page 43-60 of the v7 guide (found at ftp.uni-potsdam.de/pub/WWW/netscape/livewire/InformixDoc/…) shows it - note the figure is missing the "long tb_start" element positioned after tb_tblspace (this represents the starting byte).

          – Simon Riddle
          Nov 26 '18 at 9:37





          I also found the tblob_t structure is listed in some older versions of the Informix Administrator's Guide. For example page 43-60 of the v7 guide (found at ftp.uni-potsdam.de/pub/WWW/netscape/livewire/InformixDoc/…) shows it - note the figure is missing the "long tb_start" element positioned after tb_tblspace (this represents the starting byte).

          – Simon Riddle
          Nov 26 '18 at 9:37













          Thanks, I'm not sure if those fields are in the same order as they are on the wire, yet this is a start.

          – user2722968
          Nov 26 '18 at 12:38





          Thanks, I'm not sure if those fields are in the same order as they are on the wire, yet this is a start.

          – user2722968
          Nov 26 '18 at 12:38




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53430840%2fdecode-sq-fetchblob-in-informix-protocol%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







          這個網誌中的熱門文章

          Xamarin.form Move up view when keyboard appear

          Post-Redirect-Get with Spring WebFlux and Thymeleaf

          Anylogic : not able to use stopDelay()