<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.recessim.com/w/index.php?action=history&amp;feed=atom&amp;title=MSS100</id>
	<title>MSS100 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.recessim.com/w/index.php?action=history&amp;feed=atom&amp;title=MSS100"/>
	<link rel="alternate" type="text/html" href="https://wiki.recessim.com/w/index.php?title=MSS100&amp;action=history"/>
	<updated>2026-04-16T20:26:44Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>https://wiki.recessim.com/w/index.php?title=MSS100&amp;diff=2761&amp;oldid=prev</id>
		<title>ThoughtWiz: Created page with &quot;Lantronix MSS100 case front with &quot;Retro Teal&quot; branding &lt;span id=&quot;contents&quot;&gt;&lt;/span&gt;  &lt;span id=&quot;mss100&quot;&gt;&lt;/span&gt; = MSS100 =  Serial t...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.recessim.com/w/index.php?title=MSS100&amp;diff=2761&amp;oldid=prev"/>
		<updated>2024-11-23T19:24:05Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&lt;a href=&quot;/view/File:Lantronix_MSS100_external.jpg&quot; title=&quot;File:Lantronix MSS100 external.jpg&quot;&gt;thumb|Lantronix MSS100 case front with &amp;quot;Retro Teal&amp;quot; branding&lt;/a&gt; &amp;lt;span id=&amp;quot;contents&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;  &amp;lt;span id=&amp;quot;mss100&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; = MSS100 =  Serial t...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[File:Lantronix MSS100 external.jpg|thumb|Lantronix MSS100 case front with &amp;quot;Retro Teal&amp;quot; branding]]&lt;br /&gt;
&amp;lt;span id=&amp;quot;contents&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;mss100&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= MSS100 =&lt;br /&gt;
&lt;br /&gt;
Serial to Ethernet device produced by Lantronix&lt;br /&gt;
&lt;br /&gt;
There are a bunch of these on the public Internet, or a bunch of honeypots :) - 6 real ones on the internet, over 300 honeypots.&lt;br /&gt;
&lt;br /&gt;
I purchased a used one for $19 on eBay including shipping in April 2024&lt;br /&gt;
&lt;br /&gt;
[https://www.lantronix.com/wp-content/uploads/pdf/MSS_QSG.pdf Quick Start Guide] [https://www.lantronix.com/wp-content/uploads/pdf/mss1-x.pdf Installation Guide] [https://www.lantronix.com/wp-content/uploads/pdf/mss_ref.pdf Reference Manual]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;external-photos&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= External Photos =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; heights=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
File:Lantronix MSS100 external.jpg|thumb|Lantronix MSS100 case front with &amp;quot;Retro Teal&amp;quot; branding&lt;br /&gt;
File:Mss100-external-ethernet-power.jpg|thumb|MSS100 Ethernet and DC input ports&lt;br /&gt;
File:Mss100-external-serial.jpg|thumb|MSS100 serial port&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;disassembly&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Disassembly =&lt;br /&gt;
&lt;br /&gt;
Two PH0 screws on either side. Remove the serial port pegs. Then press on the serial port to shift the two metal halves apart&lt;br /&gt;
&lt;br /&gt;
Internal lot date: 06/99&lt;br /&gt;
&lt;br /&gt;
Three additional internal PH0 screws holding the PCB to the metal housing. Slide PCB slightly toward the serial side, then lift at an angle parallel to the length&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;internal-photos&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Internal Photos =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; heights=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
File:Internal-casefront.jpg|thumb|Inside of the front of the MSS100 case&lt;br /&gt;
File:External-screws.jpg|thumb|MSS100 external screws&lt;br /&gt;
File:Internal-casewide.jpg|thumb|Wide angle photo of the front of the MSS100 circuit board&lt;br /&gt;
File:Internal-caseclose1.jpg|thumb|Close up shot of the MSS100 circuit board&lt;br /&gt;
File:Internal-caseclose2.jpg|thumb|Close up shot of the MSS100 circuit board&lt;br /&gt;
File:Internal-caseclose3.jpg|thumb|Close up shot of the MSS100 circuit board&lt;br /&gt;
File:Internal-caseclose4.jpg|thumb|Close up shot of the MSS100 circuit board&lt;br /&gt;
File:Internal-caseclose5.jpg|thumb|Close up shot of the MSS100 circuit board&lt;br /&gt;
File:Internal-headers1.jpg|thumb|Close up shot of the MSS100 circuit board showing internal headers&lt;br /&gt;
File:Internal-caseclose6.jpg|thumb|Close up shot of the MSS100 circuit board&lt;br /&gt;
File:Internal-headers2.jpg|thumb|Close up shot of the MSS100 circuit board showing an unpopulated header connection&lt;br /&gt;
File:Internal-bottomwide.jpg|thumb|Wide angle photo of the bottom of the MSS100 circuit board&lt;br /&gt;
File:Internal-bottomclose1.jpg|thumb|Close up shot of the bottom of the MSS100 circuit board&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;components&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Components =&lt;br /&gt;
&lt;br /&gt;
Shares components with [[MSSVIA#Components]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Component&lt;br /&gt;
! Part No.&lt;br /&gt;
! Manufacturer&lt;br /&gt;
|-&lt;br /&gt;
| Dual Speed Ethernet Transceiver&lt;br /&gt;
| Level One 9929 DF58 [https://www.alldatasheet.com/datasheet-pdf/pdf/66167/INTEL/LXT970AQC.html LXT970AQC] 2LVU20236.1&lt;br /&gt;
| Intel Corporation&lt;br /&gt;
|-&lt;br /&gt;
| CMOS Boot Flash&lt;br /&gt;
| AM29LV800BT-120EC 9928GBB HH&lt;br /&gt;
| Advanced Micro Devices&lt;br /&gt;
|-&lt;br /&gt;
| 16 Meg FPM DRAM (x2)&lt;br /&gt;
| 9928 MT 4LC1M16C3 TG -6 V&lt;br /&gt;
| Micron&lt;br /&gt;
|-&lt;br /&gt;
| Voltage Regulator&lt;br /&gt;
| [https://www.onsemi.com/pdf/datasheet/mc33269-d.pdf 269-3] XAUY&lt;br /&gt;
| Onsemi&lt;br /&gt;
|-&lt;br /&gt;
| Supply Voltage Supervisor&lt;br /&gt;
| [https://pdf1.alldatasheet.com/datasheet-pdf/download/177157/TI/7705AC.html 7705AC] 96M AEOF&lt;br /&gt;
| Texas Instruments&lt;br /&gt;
|-&lt;br /&gt;
| RS-232 Transmitter/Receiver&lt;br /&gt;
| HIN 208ECA L9909GFFT&lt;br /&gt;
| Renesas&lt;br /&gt;
|-&lt;br /&gt;
| CPU&lt;br /&gt;
| Net+ARM 55595B/0136951 234 9926&lt;br /&gt;
| NETSILICON&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
CPU and another DRAM chip on the bottom side of the board&lt;br /&gt;
&lt;br /&gt;
https://ftp1.digi.com/support/documentation/userguide_hwreferenceguide.pdf 1.2 NET+ARM Chip Key Features 32-bit ARM7TDMI RISC Processor&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/ARM7#ARM7TDMI The ARM7TDMI (ARM7 + 16 bit Thumb + JTAG Debug + fast Multiplier + enhanced ICE) processor implements the ARMv4 instruction set.&lt;br /&gt;
&lt;br /&gt;
I already tried loading our COFF into Ghidra as ARMv4, but it didn’t like it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;revisions&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Revisions =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Retro Teal&lt;br /&gt;
! Blue Splotch&lt;br /&gt;
! Orange Swab&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Lantronix MSS100 external.jpg|thumb|Lantronix MSS100 case front with &amp;quot;Retro Teal&amp;quot; branding]]&lt;br /&gt;
| [https://ecx.images-amazon.com/images/I/31DK6Y3T24L._SX300_.jpg Link to &amp;quot;Blue Splotch&amp;quot; branding example image]&lt;br /&gt;
| [https://automatyka.istore.pl/userdata/public/gfx/40872/DSC_0489.jpg Link to &amp;quot;Orange Swab&amp;quot; branding example image]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Revision 1&lt;br /&gt;
! Revision 2&lt;br /&gt;
! Model&lt;br /&gt;
! Country&lt;br /&gt;
! Weekstamp&lt;br /&gt;
! Branding&lt;br /&gt;
|-&lt;br /&gt;
| B0 *&lt;br /&gt;
| Unknown&lt;br /&gt;
| MSS100&lt;br /&gt;
| USA&lt;br /&gt;
| 06/99 *&lt;br /&gt;
| Retro Teal&lt;br /&gt;
|-&lt;br /&gt;
| B12&lt;br /&gt;
| Unknown&lt;br /&gt;
| MSS100&lt;br /&gt;
| USA&lt;br /&gt;
| Unknown&lt;br /&gt;
| Retro Teal&lt;br /&gt;
|-&lt;br /&gt;
| A15&lt;br /&gt;
| Unknown&lt;br /&gt;
| MSS100-357&lt;br /&gt;
| USA&lt;br /&gt;
| Unknown&lt;br /&gt;
| Blue Splotch&lt;br /&gt;
|-&lt;br /&gt;
| D13&lt;br /&gt;
| Unknown&lt;br /&gt;
| MSS100&lt;br /&gt;
| USA&lt;br /&gt;
| Unknown&lt;br /&gt;
| Blue Splotch&lt;br /&gt;
|-&lt;br /&gt;
| E14&lt;br /&gt;
| Unknown&lt;br /&gt;
| MSS100&lt;br /&gt;
| USA&lt;br /&gt;
| Unknown&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| E16&lt;br /&gt;
| Unknown&lt;br /&gt;
| MSS100&lt;br /&gt;
| Unknown&lt;br /&gt;
| Unknown&lt;br /&gt;
| Blue Splotch&lt;br /&gt;
|-&lt;br /&gt;
| F14&lt;br /&gt;
| Unknown&lt;br /&gt;
| MSS100&lt;br /&gt;
| China&lt;br /&gt;
| 1702&lt;br /&gt;
| Blue Splotch&lt;br /&gt;
|-&lt;br /&gt;
| F15&lt;br /&gt;
| Unknown&lt;br /&gt;
| MSS100&lt;br /&gt;
| China&lt;br /&gt;
| 2902&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| F15&lt;br /&gt;
| Unknown&lt;br /&gt;
| MSS100&lt;br /&gt;
| China&lt;br /&gt;
| 3002&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| F15&lt;br /&gt;
| Unknown&lt;br /&gt;
| MSS100&lt;br /&gt;
| China&lt;br /&gt;
| 0303&lt;br /&gt;
| Blue Splotch&lt;br /&gt;
|-&lt;br /&gt;
| B11&lt;br /&gt;
| Unknown&lt;br /&gt;
| MSS100-11&lt;br /&gt;
| China&lt;br /&gt;
| 04W09&lt;br /&gt;
| Blue Splotch&lt;br /&gt;
|-&lt;br /&gt;
| E19&lt;br /&gt;
| Rev. D&lt;br /&gt;
| MSS100&lt;br /&gt;
| China&lt;br /&gt;
| 05W04&lt;br /&gt;
| Orange Swab&lt;br /&gt;
|-&lt;br /&gt;
| B13&lt;br /&gt;
| Rev. D&lt;br /&gt;
| MSS100&lt;br /&gt;
| China&lt;br /&gt;
| 05W14&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| E19&lt;br /&gt;
| Rev. D&lt;br /&gt;
| MSS100&lt;br /&gt;
| China&lt;br /&gt;
| 05W17&lt;br /&gt;
| Orange Swab&lt;br /&gt;
|-&lt;br /&gt;
| B14&lt;br /&gt;
| Rev. D&lt;br /&gt;
| MSS100&lt;br /&gt;
| China&lt;br /&gt;
| 05W44&lt;br /&gt;
| Orange Swab&lt;br /&gt;
|-&lt;br /&gt;
| E20&lt;br /&gt;
| Rev. D&lt;br /&gt;
| MSS100&lt;br /&gt;
| China&lt;br /&gt;
| 06W24&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| A11&lt;br /&gt;
| Rev. C&lt;br /&gt;
| MSS100&lt;br /&gt;
| China&lt;br /&gt;
| 07W06&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| A13&lt;br /&gt;
| Rev. C&lt;br /&gt;
| MSS100&lt;br /&gt;
| China&lt;br /&gt;
| 08W51&lt;br /&gt;
| Orange Swab&lt;br /&gt;
|-&lt;br /&gt;
| A13&lt;br /&gt;
| Unknown&lt;br /&gt;
| MSS100-21&lt;br /&gt;
| Unknown&lt;br /&gt;
| Unknown&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| A14&lt;br /&gt;
| Rev. C&lt;br /&gt;
| MSS100&lt;br /&gt;
| China&lt;br /&gt;
| 09W52&lt;br /&gt;
| Orange Swab&lt;br /&gt;
|-&lt;br /&gt;
| A14&lt;br /&gt;
| Rev. C&lt;br /&gt;
| MSS100&lt;br /&gt;
| China&lt;br /&gt;
| 10W08&lt;br /&gt;
| Orange Swab&lt;br /&gt;
|-&lt;br /&gt;
| A14&lt;br /&gt;
| Rev. D&lt;br /&gt;
| MSS100-21&lt;br /&gt;
| China&lt;br /&gt;
| 10W42&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| A14&lt;br /&gt;
| Rev. D&lt;br /&gt;
| MSS100-22&lt;br /&gt;
| China&lt;br /&gt;
| 11W02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| A14&lt;br /&gt;
| Rev. D&lt;br /&gt;
| MSS100-21&lt;br /&gt;
| China&lt;br /&gt;
| 11W30&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;: based on internal markings&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;firmware&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Firmware =&lt;br /&gt;
&lt;br /&gt;
[https://ts.lantronix.com/ftp/mss100/ Download Link] Only 3.8.1 is available, Archive.org goes back to 2020, no other versions available&lt;br /&gt;
&lt;br /&gt;
[https://ts.lantronix.com/ftp/old_rel/mss100/ Older versions], going back to v3.5.6 Saw on Shodan that there is some 3.6.? firmware or something&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;reverse-engineering&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Reverse engineering =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;xxdhexdump&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== xxd/Hexdump ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;hexdump&amp;quot;&amp;gt;00000000  16 67 4f f2 bb 7a d5 7d  00 00 00 00 ff ff e1 36  |.gO..z.}.......6|&lt;br /&gt;
00000010  e1 36 00 00 01 01 00 00  40 40 56 00 01 00 15 00  |.6......@@V.....|&lt;br /&gt;
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|&lt;br /&gt;
*&lt;br /&gt;
000000f0  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|&lt;br /&gt;
00000100  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|&lt;br /&gt;
*&lt;br /&gt;
00000200  0a 00 00 07 00 00 00 00  00 00 00 00 00 00 00 00  |................|&lt;br /&gt;
00000210  00 1c 46 0f 01 0b 00 00  00 0b cf 68 00 00 5e f0  |..F........h..^.|&lt;br /&gt;
00000220  00 00 c5 34 00 02 01 88  00 02 00 00 00 0e bd e0  |...4............|&lt;br /&gt;
00000230  2e 74 65 78 74 00 00 00  00 02 00 00 00 02 00 00  |.text...........|&lt;br /&gt;
00000240  00 0b cf 68 00 00 01 48  00 00 00 00 00 00 00 00  |...h...H........|&lt;br /&gt;
00000250  00 00 00 00 00 00 00 20  2e 67 6c 75 65 00 00 00  |....... .glue...|&lt;br /&gt;
00000260  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|&lt;br /&gt;
00000270  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 20  |............... |&lt;br /&gt;
00000280  2e 76 65 72 73 00 00 00  00 0d cf 68 00 0d cf 68  |.vers......h...h|&lt;br /&gt;
00000290  00 00 00 48 00 0b d0 b0  00 00 00 00 00 00 00 00  |...H............|&lt;br /&gt;
000002a0  00 00 00 00 00 00 00 40  2e 72 64 61 74 61 00 00  |.......@.rdata..|&lt;br /&gt;
000002b0  00 0d cf b0 00 0d cf b0  00 00 ee 30 00 0b d0 f8  |...........0....|&lt;br /&gt;
000002c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 80 20  |............... |&lt;br /&gt;
000002d0  2e 64 61 74 61 00 00 00  00 0e bd e0 00 0e bd e0  |.data...........|&lt;br /&gt;
000002e0  00 00 5e f0 00 0c bf 28  00 00 00 00 00 00 00 00  |..^....(........|&lt;br /&gt;
000002f0  00 00 00 00 00 00 00 40  2e 62 73 73 00 00 00 00  |.......@.bss....|&lt;br /&gt;
00000300  00 0f 1c d0 00 0f 1c d0  00 00 c5 34 00 00 00 00  |...........4....|&lt;br /&gt;
00000310  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 80  |................|&lt;br /&gt;
00000320  2e 64 69 73 6b 00 00 00  00 0f e2 04 00 0f e2 04  |.disk...........|&lt;br /&gt;
00000330  00 00 9a 20 00 0d 1e 18  00 00 00 00 00 00 00 00  |... ............|&lt;br /&gt;
00000340  00 00 00 00 00 00 00 20  ea 00 00 60 ea 00 00 32  |....... ...`...2|&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
There is a standard Lantronix firmware header at &amp;lt;code&amp;gt;00000000&amp;lt;/code&amp;gt;, also seen in [https://netzhansa.com/lantronix-lat-master-password/ this blog post] and [[IQeye 511]]. &amp;lt;code&amp;gt;000000f0&amp;lt;/code&amp;gt; is of an unknown relevance, but it also appears in the linked blog post. &amp;lt;code&amp;gt;00000200&amp;lt;/code&amp;gt; starts some kind of [https://en.wikipedia.org/wiki/COFF COFF]. This is similar to the blog post, but the initial bytes are different and there are additional sections.&lt;br /&gt;
&lt;br /&gt;
Virtual Jaguar, [https://github.com/OpenEmu/VirtualJaguar-Core/blob/master/VirtualJaguar/src/file.cpp#L624 this] has another example of a COFF file with the magic bytes from that blog post. Makes sense as the [https://en.wikipedia.org/wiki/Atari_Jaguar Atari Jaguar] also used a Motorola 68k processor.&lt;br /&gt;
&lt;br /&gt;
Not sure what to make of these sections. Apple [https://opensource.apple.com/source/gcc/gcc-1640/gcc/collect2.c.auto.html references] &amp;lt;code&amp;gt;.glue&amp;lt;/code&amp;gt;. Ghidra [https://ghidra.re/ghidra_docs/api/constant-values.html references] &amp;lt;code&amp;gt;.glue&amp;lt;/code&amp;gt;. [https://github.com/ARM-software/u-boot/blob/master/arch/arm/lib/crt0_arm_efi.S#L26 ARM’s u-boot loader for PE/COFFs] thinks the header should be &amp;lt;code&amp;gt;0x01c2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[https://www.ti.com/lit/an/spraao8/spraao8.pdf?ts=1712473389471 COFF Reference] Page 4 is File Header Structure Bytes 0-1 are Version ID - Our’s is &amp;lt;code&amp;gt;0a 00&amp;lt;/code&amp;gt; is this the magic bytes for an [https://chromium.googlesource.com/chromiumos/third_party/binutils/+/refs/heads/stabilize-7019.B/include/coff/arm.h#79 ARM COFF] or did the guy just make it up, as the comment says? - [https://www.ti.com/lit/an/spraao8/spraao8.pdf?ts=1712473389471 Table 3] says &amp;lt;code&amp;gt;00a0h&amp;lt;/code&amp;gt; is the magic number for [https://www.ti.com/microcontrollers-mcus-processors/msp430-microcontrollers/overview.html MSP430 device family], a 16-bit microcontroller. [https://www.ti.com/tool/MSP-CGT#included MSP430 Code Generation Tools] - [https://www.ti.com/sc/docs/products/micro/msp430/userguid/as_2.pdf Introduction to the COFF Format for MSP430 Family] - I tried importing our &amp;lt;code&amp;gt;.o&amp;lt;/code&amp;gt; file into Ghidra as an MSP430, but it doesn’t like it Bytes 2-3 are Number of Section Headers - Our’s is &amp;lt;code&amp;gt;00 07&amp;lt;/code&amp;gt;, and we have 7 sections! Definitely a COFF Bytes 4-7 are a timestamp of when the file was created - Our’s is all &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; Bytes 8-11 are the symbol table’s starting address - Our’s is all &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; Bytes 12-15 are the number of entries in the symbol table - Our’s is all &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; Bytes 16-17 is the number of bytes in an optional header. Either 0 or 28 - Our’s is &amp;lt;code&amp;gt;00 1c&amp;lt;/code&amp;gt;, which is 28! We have an optional header of 28 bytes Bytes 18-19 are flags - Our’s is &amp;lt;code&amp;gt;46 0f&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;0100 0110 0000 1111 # Our flags&lt;br /&gt;
0000 0000 0000 0001 # Relocation stripped&lt;br /&gt;
0000 0000 0000 0010 # File is relocatable, no unresolved external references&lt;br /&gt;
0000 0000 0000 0100 # Line numbers stripped&lt;br /&gt;
0000 0000 0000 1000 # Local symbols stripped&lt;br /&gt;
0000 0010 0000 0000 # Big endian&lt;br /&gt;
0000 0100 0000 0000 # Mystery flag&lt;br /&gt;
0100 0000 0000 0000 # Mystery flag&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bytes 20-21 Target ID/Magic number - Our’s is &amp;lt;code&amp;gt;01 0b&amp;lt;/code&amp;gt;, which is not in Table 3. This is also the same value as in the [https://netzhansa.com/lantronix-lat-master-password/ blog post]!&lt;br /&gt;
&lt;br /&gt;
Optional Header Bytes 0-1 are an optional file header magic number. Example given is &amp;lt;code&amp;gt;0x0108&amp;lt;/code&amp;gt;, similar to above - Our’s is &amp;lt;code&amp;gt;00 00&amp;lt;/code&amp;gt; Bytes 2-3 is a version stamp - Our’s is &amp;lt;code&amp;gt;00 0b&amp;lt;/code&amp;gt; Bytes 4-7 is the size in bytes of the executable code - Our’s is &amp;lt;code&amp;gt;cf 68 00 00&amp;lt;/code&amp;gt;, or 3,479,699,456 in decimal. Roughly 3.5GB - Our whole firmware file is less than 1MB… strange - Without the trailing zeroes, &amp;lt;code&amp;gt;cf 68&amp;lt;/code&amp;gt; is 53,096 which makes a bit more sense. ~53kb Bytes 8-11 is the size in bytes of the initialized data - Our’s is &amp;lt;code&amp;gt;5e f0 00 00&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x5ef0&amp;lt;/code&amp;gt; = 24,304 in decimal. ~24kb Bytes 12-15 is the size in bytes of the uninitialized data - Our’s is &amp;lt;code&amp;gt;c5 34 00 02&amp;lt;/code&amp;gt; = 3,308,519,426 in decimal. Doesn’t make sense Bytes 16-19 is the entry point - Our’s is &amp;lt;code&amp;gt;01 88 00 02&amp;lt;/code&amp;gt; - Btw, our file goes to &amp;lt;code&amp;gt;000dba40&amp;lt;/code&amp;gt;, that includes all the zip archive as well - Maybe it needs to be read &amp;lt;code&amp;gt;00021088&amp;lt;/code&amp;gt; or 135,304 in decimal. that makes sense Bytes 20-23 is the beginning address of the executable code - Our’s is &amp;lt;code&amp;gt;00 02 00 00&amp;lt;/code&amp;gt; Bytes 24-27 is the beginning address of initialized data - Our’s is &amp;lt;code&amp;gt;00 0e bd e0&amp;lt;/code&amp;gt; - &amp;lt;code&amp;gt;bde0000e&amp;lt;/code&amp;gt; is way out of our file size, and so is &amp;lt;code&amp;gt;000ebde0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
todo: put the above information in a table&lt;br /&gt;
&lt;br /&gt;
Section headers We have 7 of them: &amp;lt;code&amp;gt;.text&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.glue&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.vers&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.rdata&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.data&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.bss&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;.disk&amp;lt;/code&amp;gt; There’s two versions of COFF section headers - COFF1 and COFF2 I don’t know what the difference is between “TMS430” and “MSP430” Let’s say we’re dealing with COFF2 and see if everything makes sense or not Conclusion: We’re using [https://www.ti.com/lit/an/spraao8/spraao8.pdf?ts=1712473389471 COFF1], which TI says is for C5400 only I can’t find much information about C5400 online, and nothing regarding whether it’s supported by Ghidra&lt;br /&gt;
&lt;br /&gt;
Bytes 0-7 are an 8 character section name padded with zeroes - Let’s start with &amp;lt;code&amp;gt;.text&amp;lt;/code&amp;gt; Bytes 8-11 are the section’s physical address - Our’s is &amp;lt;code&amp;gt;00 02 00 00&amp;lt;/code&amp;gt;, just like the beginning address of executable code above Bytes 12-15 are the section’s virtual address - Our’s is &amp;lt;code&amp;gt;00 02 00 00&amp;lt;/code&amp;gt;, just like the physical address above Bytes 16-19 is the section size in bytes (words for COFF1) - Our’s is &amp;lt;code&amp;gt;00 0b cf 68&amp;lt;/code&amp;gt; - same bytes as the version stamp and the lower bytes of the size of the executable code from the optional header. weird as those are totally separate things Bytes 20-23 is a file pointer to raw data - Our’s is &amp;lt;code&amp;gt;00 00 01 48&amp;lt;/code&amp;gt; - Does this translate to &amp;lt;code&amp;gt;00000348&amp;lt;/code&amp;gt;? This is right after the end of the &amp;lt;code&amp;gt;.disk&amp;lt;/code&amp;gt; section - Value at the location is &amp;lt;code&amp;gt;ea 00 00 60&amp;lt;/code&amp;gt;. Not making sense just yet Bytes 24-27 is a file pointer to the relocation entries - Our’s is all &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;, makes sense as the relocation stripped flag is set Bytes 28-31 are reserved Bytes 32-35 are the number of relocation entries Bytes 36-39 are reserved (or is this a TMS430?) (in COFF2) - Our’s is &amp;lt;code&amp;gt;00 00 00 20&amp;lt;/code&amp;gt; - This makes more sense as a COFF1 section, as this is the end of the section header Bytes 36-37 are flags (in COFF1) - Our’s is &amp;lt;code&amp;gt;00 00&amp;lt;/code&amp;gt; Byte 38 is reserved Byte 39 is the memory page number - Our’s is &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;, or 32 in decimal&lt;br /&gt;
&lt;br /&gt;
todo: put the above information in a table&lt;br /&gt;
&lt;br /&gt;
So does our &amp;lt;code&amp;gt;.text&amp;lt;/code&amp;gt; section begin at &amp;lt;code&amp;gt;00000400&amp;lt;/code&amp;gt; since our COFF file begins at &amp;lt;code&amp;gt;00000200&amp;lt;/code&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
Debian used to ship [https://manpages.debian.org/stretch/binutils-msp430/msp430-objdump.1.en.html &amp;lt;code&amp;gt;msp430-objdump&amp;lt;/code&amp;gt;] which I might be able to use to follow along with [https://netzhansa.com/lantronix-lat-master-password/ that blog]. That is, assuming we are using an MSP430.&lt;br /&gt;
&lt;br /&gt;
Equipped with this information, it was time to start Ghidra, open a new project and import the binary file selecting “68000” in the “Language and Compiler Specification” dialog. In the Code Browser, I defined the mapping from the object file to memory locations using the “Memory Map” tool. First, the automatically created “ram” section needed to be removed, then I could define “text”, “data” and “bss” sections according to the &amp;lt;code&amp;gt;objdump&amp;lt;/code&amp;gt; output.&lt;br /&gt;
&lt;br /&gt;
Let’s try doing that with our file, at least the &amp;lt;code&amp;gt;.text&amp;lt;/code&amp;gt; section&lt;br /&gt;
&lt;br /&gt;
For some reason, the maximum address size for MSP430 in Ghidra is &amp;lt;code&amp;gt;0xffff&amp;lt;/code&amp;gt;, which makes sense for a 16-bit CPU. Makes me think this isn’t our microprocessor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;strings&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Strings =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Punix version B3.0/165(051018)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Portions of Punix Universal C (PUC) are derived from EiC V4.1.0, an online&lt;br /&gt;
bytecode C interpreter (www.anarchos.com/eic), and are used with permission.&amp;lt;/pre&amp;gt;&lt;br /&gt;
In [https://web.archive.org/web/20000817174324/http://www.anarchos.com/eic/ Archive.org]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;anonymous&lt;br /&gt;
biteme&lt;br /&gt;
anonymous login ok, proceed.&lt;br /&gt;
Password required.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;disk rm -r /ram/*&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Server: Gordian Embedded1.0&amp;lt;/code&amp;gt;, see also [[IQeye 511]], another product that legitimately uses this. In general, there’s 308 servers on Shodan matching this header, and I think all of them are honeypots.&lt;br /&gt;
&lt;br /&gt;
[https://www.sec.gov/Archives/edgar/data/1114925/000101706202001163/0001017062-02-001163.txt SEC Archive]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;     Lantronix also announced that it has signed an agreement with Gordian&lt;br /&gt;
Corporation that gives Lantonix joint ownership of the Gordian intellectual&lt;br /&gt;
property that is embodied in the products Gordian has designed for Lantronix.&lt;br /&gt;
Lantronix will pay Gordian $6.0 million to acquire an interest in the Gordian&lt;br /&gt;
intellectual property. Lantronix will also purchase $1.5 million for engineering&lt;br /&gt;
and support services from Gordian over the next 18 months.&lt;br /&gt;
&lt;br /&gt;
     A copy of the press release issued on May 30, 2002 is attached hereto as&lt;br /&gt;
Exhibit 99.1 and the Agreement dated May 28, 2002 between Gordian Corporation&lt;br /&gt;
and Lantronix, Inc. is attached hereto as Exhibit 10.16.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;POST&lt;br /&gt;
application&lt;br /&gt;
x-www-form-urlencoded&lt;br /&gt;
Set-Cookie: %s=%s&lt;br /&gt;
/oem/version.txt&lt;br /&gt;
/oem/factory.cmd&lt;br /&gt;
/oem/startup.cmd&lt;br /&gt;
/oem/README&amp;lt;/pre&amp;gt;&lt;br /&gt;
My hypothesis that the microcontroller architecture would be referenced in the strings was confirmed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ARM-COFF&lt;br /&gt;
r0 = %08lx  r1 = %08lx  r2 = %08lx  r3 = %08lx&lt;br /&gt;
r4 = %08lx  r5 = %08lx  r6 = %08lx  r7 = %08lx&lt;br /&gt;
r8 = %08lx  r9 = %08lx  r10 = %08lx&lt;br /&gt;
fp = %08lx  ip = %08lx  lr = %08lx&lt;br /&gt;
pc = %08lx sp = %08lx psr = %08lx prc_cur = %s&amp;lt;/pre&amp;gt;&lt;br /&gt;
Need to try opening in Ghidra as ARM. Tried as ARM v4, Ghidra didn’t like it&lt;br /&gt;
&lt;br /&gt;
Hypothesis: As the firmware includes a C interpreter, there must be C source code included to be interpreted&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;relationships&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Relationships =&lt;br /&gt;
&lt;br /&gt;
[https://ltrxdev.atlassian.net/wiki/spaces/LTRXTS/pages/106954830/How+to+Translate+MSS+Configuration+Settings+for+a+UDS+Device+Server Lantronix Teck Support Public Confluence] “the MSS runs on a different operating system than the UDS”&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;C:\&amp;amp;gt;telnet 172.18.32.3&lt;br /&gt;
Password = access (You may not be prompted for a password. If you are, access is the default password, or use the password you've defined)&lt;br /&gt;
Username = &amp;amp;lt;any name&amp;amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Telnet into the UDS IP Address at port 9999:&lt;br /&gt;
C:\&amp;amp;gt;telnet 172.18.32.4 9999&lt;br /&gt;
Press Enter to get into Setup Mode. &amp;amp;lt;-- Press Enter within 3 seconds&amp;lt;/pre&amp;gt;&lt;br /&gt;
https://ltrxdev.atlassian.net/wiki/spaces/LTRXTS/pages/106889366/Emulate+a+direct+serial+connection+over+the+LAN+-+MSS+Serial+Tunnel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;To be able to configure the settings below you need to become a privileged user. The default password is &amp;amp;quot;system&amp;amp;quot;&lt;br /&gt;
To do this enter on both MSS units the following:&lt;br /&gt;
&lt;br /&gt;
Local&amp;amp;gt; SET PRIVILEGED&lt;br /&gt;
Password&amp;amp;gt; system &amp;amp;lt;- does not echo&lt;br /&gt;
&lt;br /&gt;
The prompt will change to: &amp;amp;quot;Local_n&amp;amp;gt;&amp;amp;gt;&amp;amp;quot;, indicating that you are now a privileged user, where n is either 1 if you are configuring the MSS through the serial interface, or some larger number if you connected to the CLI via telnet.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.ti.com/lit/ta/sszt447/sszt447.pdf?ts=1713154994724&amp;amp;ref_url=https%253A%252F%252Fwww.ti.com%252Ftool%252FTIDA-00226 Overcoming Ethernet Connectivity Challenges on the Power Grid]&lt;br /&gt;
&lt;br /&gt;
The specific Net+ARM CPU is referenced in [https://patentimages.storage.googleapis.com/ea/da/1b/f62fb06e2fd019/US6889266.pdf this patent]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;todo&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= TODO =&lt;br /&gt;
&lt;br /&gt;
* Contribute to &amp;lt;code&amp;gt;file&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;binwalk&amp;lt;/code&amp;gt; recognition of Lantronix firmware files&lt;br /&gt;
** &amp;lt;code&amp;gt;16 67 4f f2 bb 7a d5 7d  00 00 00 00 ff ff e1&amp;lt;/code&amp;gt;&lt;br /&gt;
** Maybe this also applies to other types of files&lt;br /&gt;
** Doing a search on VirusTotal using a Yara rule might find more&lt;/div&gt;</summary>
		<author><name>ThoughtWiz</name></author>
		
	</entry>
</feed>