<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <br>
    <br>
    <div class="moz-cite-prefix">On 12/19/21 17:08, graham kelly via
      Cuis-dev wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:d1596ce9-b0fe-8c4e-f3d2-b25f44abe75a@gmail.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <p><br>
      </p>
      <div class="moz-cite-prefix">On 12/16/21 2:40 AM, Gerald Klix via
        Cuis-dev wrote:<br>
      </div>
      <blockquote type="cite"
        cite="mid:99c2f77f-42e4-0b32-b168-9cc0a8d06161@klix.ch"> <br>
        <br>
        On 12/16/21 12:07 AM, Nicola Mingotti via Cuis-dev wrote: <br>
        <blockquote type="cite"> <br>
          <br>
          On 12/15/21 15:43, Gerald Klix wrote: <br>
          <blockquote type="cite">Hi Nicola, <br>
            <br>
            On 12/15/21 12:34 PM, Nicola Mingotti via Cuis-dev wrote: <br>
            <blockquote type="cite">Hi guys, <br>
              <br>
              I am considering the possibility of delivering an
              application <br>
              I am closing these days in the BeagleBone Black /
              BeagleBone AI in Cuis-Smalltalk. <br>
              <br>
              The application is already written in Python + Node it
              would <br>
              be mostly a translation effort. <br>
              <br>
              It would be a major advantage If could hide the code from
              unwelcome eyes (the competence). <br>
              My classes, specific for the application, should be by
              default visible only <br>
              byte compiled. <br>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
      Couldn't you use a blocklist, where competitors aren't allowed to
      see the code... but everyone else can?<br>
      <blockquote type="cite"
        cite="mid:99c2f77f-42e4-0b32-b168-9cc0a8d06161@klix.ch">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite"> <br>
              I discovered a few days ago the possibility of seeing the
              bytecode <br>
              of a method doing : "Inspect compiled method" so I started
              to ask <br>
              myself. Does Cuis need only the compiled method to run? Is
              it <br>
              necessary to have also the source code in place ? <br>
            </blockquote>
            Yes! You can switch of the warnings about missing changes
            and <br>
            source files and it will happily squeak along without source
            code. <br>
            <blockquote type="cite"> <br>
              Ideally It would be great if I could keep also the classes
              source code into <br>
              the BBB, but encrypted. In such a way that, if the
              customer needs <br>
              a modification, I log in remotely, decrypt the source,
              make the <br>
              changes and leave there again only the byte code. <br>
            </blockquote>
            There should an easier way to do that. <br>
            The only piece of information the decompiler can not
            reproduce <br>
            are the names of local variables and parameters. AFIR each
            method <br>
            has a pointer (a 32-bit offset) into the changes file (or
            the source file). These can be replaced by a collection of
            local variables names. <br>
            This will enable you to make onsite modifications without
            the source, <br>
            by relying on the decompiler only. If you want to go <br>
            that way, drop me a note and will look up the details. <br>
            <blockquote type="cite"> <br>
              Just guessing. It could be that my classes are subclasses
              of EncrypedClass which <br>
              by default shows only mangled sourcecode in the Browser,
              unless the programmer <br>
              provides a deciphering password. <br>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
      ...and makes sure the source code is believable, less a user
      copies the "source code" and fuzzes until they get valid
      Smalltalk. <br>
      <blockquote type="cite"
        cite="mid:99c2f77f-42e4-0b32-b168-9cc0a8d06161@klix.ch">
        <blockquote type="cite">
          <blockquote type="cite">Your changes are rather dim. The
            decompiler is much to good at decompiling. Of course you
            might be able to remove the decompiler, <br>
            but it would be easy to file it in again as long there is a
            compiler <br>
            available. Removing the Compiler will make it impossible to
            <br>
            make on-site changes and render every useful tool, browser,
            debugger etc.pp. useless. I bet it will render the image
            useless. <br>
            Maybe you remember the changes you made to the startup-code,
            <br>
            even in this part there are references to the compiler. <br>
            <br>
            The only chance I see here, is to change the VM to make it <br>
            load an encrypted image and password-protect access to <br>
            the browser tools in your UI. Of course if someone gains
            root <br>
            access to your computer, he/she could easily read the
            decrypted <br>
            image from RAM. <br>
            <br>
          </blockquote>
        </blockquote>
      </blockquote>
      Or not root, at least on Linux a process running as the same user
      can sometimes read all of that memory.<br>
      <blockquote type="cite"
        cite="mid:99c2f77f-42e4-0b32-b168-9cc0a8d06161@klix.ch">
        <blockquote type="cite">
          <blockquote type="cite">In a nutshell: It is not worth the
            effort. <br>
            <br>
            I might be worthwhile to run your application with an
            (overlay) <br>
            file-system that supports encryption (encfs for example). <br>
            Again you need to block access to the browsers in your UI. <br>
            <br>
            <br>
            <blockquote type="cite"> <br>
              Let me know what you think. If this is possible it would
              be <br>
              extremely interesting. If you think is very complex to
              achieve I put it <br>
              in the desiderata list, procrastinate, and keep it mind
              for the future. <br>
            </blockquote>
            I would like to see app distribution with a single file for
            Cuis <br>
            applications. That is appending the image to the VM
            executable <br>
            maybe compressed an encrypted. The big problem here is that
            <br>
            some plugins can not be compiled as internal plugins <br>
            and some drivers must be shared objects/DLLs. Of course <br>
            the VM could be changed here, but that would mean <br>
            Squeak/VMMaker programming. <br>
            <br>
            It is much easier to add modules to Python's <br>
            module loader infrastructure that load encrypted <br>
            modules. <br>
          </blockquote>
        </blockquote>
      </blockquote>
      +1. However, what about the Dynabook vision?<br>
      <blockquote type="cite"
        cite="mid:99c2f77f-42e4-0b32-b168-9cc0a8d06161@klix.ch">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite"> <br>
              <br>
              Bye <br>
              Nicola <br>
            </blockquote>
            <br>
            <br>
            HTH and Best Regards, <br>
            <br>
            Gerald <br>
          </blockquote>
          <br>
          Thank you Gerald ! <br>
          <br>
          Now that you tell me "the compiler is smart" i remembered once
          in the past you told me also: <br>
        </blockquote>
        Well -- forgive me some nitpicking here -- the compiler is
        rather dumb, <br>
        which makes it easy for the decompiler to look smart :=} <br>
        <blockquote type="cite">"you lost the .sources file, I can't see
          the variables". And i didn't even notice the difference ! <br>
        </blockquote>
        Oh yes, I remember that conversation. Now that you mention it, <br>
        AFIR it was our first conversation. <br>
        <blockquote type="cite">Therefore I guess our de-compiler is far
          too smart, leaving only the bytecode gives back very readable
          code <br>
          as far as i remember. So obfuscation via removing source code
          is not a viable option. <br>
        </blockquote>
        Yes it is so simple, that even script kiddies can do it. <br>
        <blockquote type="cite"> <br>
          Luckily the BBB has on board storage, it is not dependent on
          the SDcard. I could sabotage <br>
          the SDcard holder, that seems the fastest dumbest way to keep
          the random techie out <br>
          of my data. s/he/it <br>
        </blockquote>
        Some hot glue may help. Maybe the SD-Card-Slot can be disabled <br>
        by some means of firmware-configuration. If you want to do <br>
        this properly you should also disable any JTAG-interface. <br>
        <blockquote type="cite"> <br>
          Also, very few people know Smalltalk, this is a second level
          deterrent. Even if <br>
          they can fix the SDcard slot then they need to be able to read
          the code, and <br>
          this would require some time. For this application I don't
          have a secret formula <br>
          to hide, I just don't want others to copy/paste easily the
          whole application, change 2 colors + 1 label <br>
          and sell it as their own. <br>
        </blockquote>
        IC, deter the script kiddies is a sensible goal. <br>
        It will also save time, because you don't need to support/fix <br>
        devices that were hacked by some (not so) educated user. <br>
      </blockquote>
      For now, at least... What about the Dynabook vision? Cuis might
      put a backdoor into the core system and allow Cuis to reinstate
      the compiler, tools, etc. And <i>all</i> of that could plausibly
      be for the Dynabook vision.<br>
      <blockquote type="cite"
        cite="mid:99c2f77f-42e4-0b32-b168-9cc0a8d06161@klix.ch">
        <blockquote type="cite"> <br>
          Appimage are cool. I personally don't use them but the concept
          is good. <br>
          In the and every time you install something in the Mac or
          Windows a huge package <br>
          comes down, in Linux and BSD we are too perfectionist, we try
          to get dependencies <br>
          first and then the program we want. That is maybe the right
          thing to do, but not <br>
          the practical thing to do, especially today that a 10Tera disk
          cost 200euro. <br>
        </blockquote>
        AppImages are rather lean, when it comes to dependencies, but <br>
        the dependency-hell starts when you want to build the
        AppImage-builder <br>
        by your self. <br>
        I like Google's go-compiler, it produces statically linked
        executables, <br>
        that only need a syscall-interface. <br>
        <blockquote type="cite"> <br>
          In Linux i guess it is not a big problem to share a Cuis
          program. E.g. I would just <br>
          send you a .tar.gz of my cuis-project-xyz directory. But It
          would be all in clear, and that <br>
          often is not desirable. For the other systems i don't know. <br>
        </blockquote>
        If you stick to ZIP-files the result is fairly portable; <br>
        disregarding the VM executable and the shared objects/DLLs it
        needs. <br>
        <br>
        An app-store or any other sort of application -- in fact Cuis
        image - <br>
        repository would help, if we can find a portable <br>
        and easy way to install the squeak vm and a simple local <br>
        app-store. <br>
        <blockquote type="cite"> <br>
          <br>
          bye <br>
          Nicola <br>
          <br>
        </blockquote>
        <br>
        Best Regards, <br>
        <br>
        Gerald <br>
      </blockquote>
      <p>Love (for the Dynabook vision),</p>
      <p>Graham<br>
      </p>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
    </blockquote>
    <br>
    I found some more info, in the discussion there is Robert Nelson, so
    what is there<br>
    must be considered definitely reliable. And it is not too-too old
    (2017).<br>
<a class="moz-txt-link-freetext" href="https://forum.beagleboard.org/t/how-to-protect-scripts-and-codes/26575">https://forum.beagleboard.org/t/how-to-protect-scripts-and-codes/26575</a><br>
    <br>
    It is not possible to protect source code in the BeagleBoard. <br>
    Therefore all my Python, Node, Smalltalk code is available for
    copy/paste.<br>
    <br>
    That is a pity and a problem. <br>
    I will consider well what parts it makes sense to rewrite in C++,
    bury<br>
    into an Arduino or provide as Web services. <br>
    <br>
    bye<br>
    Nicola<br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
  </body>
</html>