<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="125320" data-post-id="125320">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="CharlesO" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/CharlesO/120/34571_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  CharlesO
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>sadly it’s a third-party legacy app. we just have the files it generates, and parts of it’s source.</p>
<blockquote>
<p>so how do you know what the contents of the file mean?</p>
</blockquote>
<p>We can see how the files are constructed from the legacy java source.</p>
<p>The content layout is a java Hashmap with binary data written under three string keys written to file.</p>
<p>If i can read back the parts of the hashmap … then i’ve effectively solved this problem.</p>
<blockquote>
<p>Java’s FileOutputStream writes raw bytes.  What you write is what you get.</p>
</blockquote>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://groups.google.com/g/erlang-programming/c/eo9HUGagIv4/m/LjgRLENBQk0J">
  <header class="source">
      <img src="https://www.gstatic.com/images/branding/product/1x/groups_32dp.png" class="site-icon" alt="" width="32" height="32">

      <a href="https://groups.google.com/g/erlang-programming/c/eo9HUGagIv4/m/LjgRLENBQk0J" target="_blank" rel="noopener nofollow ugc">groups.google.com</a>
  </header>

  <article class="onebox-body">
    

<h3><a href="https://groups.google.com/g/erlang-programming/c/eo9HUGagIv4/m/LjgRLENBQk0J" target="_blank" rel="noopener nofollow ugc">[erlang-questions] Jinterface: communication between Java and Erlang using...</a></h3>



  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>
 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="125320" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reading-files-data-structures-from-other-platforms-into-elixir-erlang/21845/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-125320" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="125320"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="125330" data-post-id="125330">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dimitarvp" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/120/38664_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dimitarvp
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Would you consider publishing 1-2 unencrypted files with the raw Java <code>HashMap</code>s as their contents?</p>
<p>I’d be interested in trying to reverse-engineer them.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="125330" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reading-files-data-structures-from-other-platforms-into-elixir-erlang/21845/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-125330" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="125330"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="125331" data-post-id="125331">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="CharlesO" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/CharlesO/120/34571_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  CharlesO
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>sure, see the links:</p>
<p><a href="http://paperlesssolutionsltd.com.ng/sample1.zip" class="onebox" target="_blank" rel="noopener nofollow ugc">http://paperlesssolutionsltd.com.ng/sample1.zip</a><br>
<a href="http://paperlesssolutionsltd.com.ng/sample2.zip" class="onebox" target="_blank" rel="noopener nofollow ugc">http://paperlesssolutionsltd.com.ng/sample2.zip</a></p>
<p>The zip files are encrypted, then the encrypted bits are packed together as a Hashmap. and written to file.</p>
<p>IF i can simply read back the hashmap from the given files, then getting them decrypted is the easier part</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="125331" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reading-files-data-structures-from-other-platforms-into-elixir-erlang/21845/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-125331" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="125331"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="125332" data-post-id="125332">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dimitarvp" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/120/38664_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dimitarvp
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Would I be able to read those files without a password or a key right now?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="125332" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reading-files-data-structures-from-other-platforms-into-elixir-erlang/21845/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-125332" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="125332"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #14"></div>
  </section>
</div>
    <div class="postbit" id="125333" data-post-id="125333">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="CharlesO" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/CharlesO/120/34571_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  CharlesO
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Yes.</p>
<p>We should be able to read the binary content: it is 3 parts:</p>
<pre><code>  localHashMap.put("SecretKey", someBytes);
  localHashMap.put("EncryptedData", localList1);
  localHashMap.put("IVSpec", someMoreBytes);
</code></pre>
<p>The sample files are just a java Hashmap written to files saved as “sample1.zip” etc</p>
<p>Can we readback the “sample1.zip” binary and read out the three parts under each of the keys, as described in the sample code</p>
<p><a href="https://paperlesssolutionsltd.com.ng/RSASecImpl.java.txt" class="onebox" target="_blank" rel="noopener nofollow ugc">https://paperlesssolutionsltd.com.ng/RSASecImpl.java.txt</a></p>
<p>That’s the source</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="125333" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reading-files-data-structures-from-other-platforms-into-elixir-erlang/21845/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-125333" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="125333"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #15"></div>
  </section>
</div>
    <div class="postbit" id="125338" data-post-id="125338">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="tcoopman" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/tcoopman/120/8112_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  tcoopman
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>We’re having some miscommunication here.</p>
<aside class="quote no-group" data-username="CharlesO" data-post="6" data-topic="21845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/charleso/48/34571_2.png" class="avatar"> CharlesO:</div>
<blockquote>
<p>Oh, those zip files were encrypted.</p>
<p>Decrypting them is not the problem, it is reading the Java Hashmap that’s the issues.</p>
</blockquote>
</aside>
<p>If I open the sample1.zip it looks like those are not a <code>zip</code> format at all? It’s really just binary output but named <code>.zip</code>?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="125338" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reading-files-data-structures-from-other-platforms-into-elixir-erlang/21845/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-125338" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="125338"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #16"></div>
  </section>
</div>
    <div class="postbit" id="125340" data-post-id="125340">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="tcoopman" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/tcoopman/120/8112_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  tcoopman
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Also, by googling a bit I found: <a href="https://www.javaworld.com/article/2072752/the-java-serialization-algorithm-revealed.html" class="inline-onebox" rel="noopener nofollow ugc">InfoWorld | Technology insight for the enterprise</a> and this indeed matches the binary format of the <code>sample1.zip</code> file provided.</p>
<p>You could have a look at this site to check how to reverse engineer the binary format. But I still think it would be simpler to write a basic java utility that reads the <code>sample1.zip</code> file and writes it to json/…</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="125340" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reading-files-data-structures-from-other-platforms-into-elixir-erlang/21845/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-125340" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="125340"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #17"></div>
  </section>
</div>
    <div class="postbit" id="125341" data-post-id="125341">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="CharlesO" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/CharlesO/120/34571_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  CharlesO
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>correct, they are not zip files at all.</p>
<p>The original zip file was encrypted and put under the key: “EncryptedData”</p>
<p>some aditional data was then put under two aditional keys as follows in a HashMap:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">  localHashMap.put("SecretKey", someBytes);
  localHashMap.put("EncryptedData", localList1);
  localHashMap.put("IVSpec", someMoreBytes);
</code></pre>
<p>The entire content was then saved as a binary with the name “sample1.zip”</p>
<p>sample1.zip is <strong>not</strong> a .zip file</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="125341" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reading-files-data-structures-from-other-platforms-into-elixir-erlang/21845/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-125341" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="125341"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #18"></div>
  </section>
</div>
    <div class="postbit" id="125351" data-post-id="125351">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dimitarvp" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/120/38664_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dimitarvp
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve looked at the article <a class="mention" href="/u/tcoopman" rel="nofollow">@tcoopman</a> linked and while it’s very possible to make a relatively tidy Erlang/Elixir mode that utilizes binary pattern matching, I believe it would be brittle and would surely not cover all cases.</p>
<p>I’d recommend, just as <a class="mention" href="/u/tcoopman" rel="nofollow">@tcoopman</a> said, you write a small Java utility that reads those serialized <code>HashMap</code>s and dump them in JSON. From then on, every normal language could work with them.</p>
<p>I am usually very interested in inter-operability between languages but in this case you’d be taking the much longer road if you don’t translate the Java serialized objects to JSON using Java itself.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="125351" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reading-files-data-structures-from-other-platforms-into-elixir-erlang/21845/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-125351" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="125351"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #19"></div>
  </section>
</div>
    <div class="postbit" id="125354" data-post-id="125354">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="NobbZ" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/NobbZ/120/27235_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  NobbZ
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>And if it’s not JSON because of space restrictions, BERT or something similar could be used, it supports compression out of the box and is not restricted to printable characters.</p>
<p>I’m pretty sure there is a Java implementation out there…</p>
<p>You can even make this converter a port, or use jerlang or what was its name to call Java code directly…</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="125354" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reading-files-data-structures-from-other-platforms-into-elixir-erlang/21845/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-125354" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="125354"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #20"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/21845/load_more?page=3">Load more posts (5 remaining)</a>
</div></template></turbo-stream>