Sticker Plotter · dokumentace

Ovladač 1.60

Otevřít zdrojový Markdown ↓

Statická inventura ovladače CFL-605RT 1.60

Výsledek

  • MMKPLT.dll je generátor kreslicího proudu. INF jej přiřazuje modelu CFL jako DriverFile, binárka načítá CFLJJ.PCD, obsahuje příkazové fragmenty MGL a zapisuje přes WritePrinter.
  • CFLJJ.PCD je modelová konfigurace rodiny CFL. Přímo určuje model 11, příkazovou větev MGL-IIc, šest per a inicializaci IN;.
  • Přibalený MPMSERV_1.dll má dvě instalační role. INF jej přiřazuje CFL jako LanguageMonitor a samostatný monitor.inf jej registruje jako PortMonitorDll.
  • Dokumentace S02 ručně volí Standard TCP/IP Port Monitor, režim RAW a port 11110. Systémový monitor vytváří TCP spojení pouze pro tuto zvolenou konfiguraci.
  • Archiv neprokazuje konkrétní řetězec jedné úlohy, vazbu na zvolený port, životní cyklus spojení ani přesný epilog MGL. Tyto body zůstávají otevřené pro Task 4.

Analýza nespustila žádnou binárku Windows, neinstalovala ovladač a nekontaktovala plotr.

Vzorek a podpis

Vlastnost Hodnota Důkaz
Zdroj sources/drivers/SetupCFL_160E.exe uzamčený archiv Tasku 1
Velikost 3 055 616 B wc -c
SHA-256 78e8454208e8d9a05f25dd524f9474bad6df9021cc3b23301db0009fa02b5e44 shasum -a 256
Formát PE32 GUI, Intel 80386 file a objdump -p
Bezpečnostní adresář PE offset 0x2e8200, délka 0x1e00 objdump -p
Podepisující subjekt v PKCS#7 C=JP, ST=Nagano, L=Tomi, O=Mimaki Engineering CO., LTD., OU=Technology Division, CN=Mimaki Engineering CO., LTD. openssl pkcs7 -print_certs po oddělení hlavičky WIN_CERTIFICATE

Příkaz signtool verify neověřil Authenticode. Lokální program signtool je nástroj NSS a přepínač verify nezná. Statická kontrola potvrzuje vložený PKCS#7 řetězec a subjekt Mimaki, nikoli aktuální důvěryhodnost celého řetězce.

Instalační vrstvy

Vrstva Obsah Účel a důkaz
Vnější PE se ZIP daty ReadmeCGCFE.txt, INF pro x86 a amd64, Setup.exe bsdtar -tf vypíše šest položek včetně dvou adresářů. bsdtar obsah rozbalí bez spuštění PE.
InstallShield launcher Setup.exe, 3 982 648 B, SHA-256 f355701c993e169d83d2da5f997b634b3b02fc316e9ce6fc4f5e3779e2eb47af metadata PE uvádějí InstallShield 20.0.496, produkt Mimaki CFL Series v160 a verzi 1.60
Připojený InstallShield stream devět souborů v installshield/Disk1/ tabulka UTF-16LE za koncem raw dat všech sekcí PE obsahuje dva CAB soubory, hlavičku CAB, instalační engine a podpůrné soubory
InstallShield CAB 48 souborů v payload/ unshield 1.6.2 přečte data1.hdr, data1.cab a data2.cab; oddělí ovladač tiskárny, monitor portu a instalační podporu

Skript extract-driver-1.60.sh před vytvořením cílového adresáře ověří velikost 3 055 616 B a přesný SHA-256 archivovaného instalátoru. Jiný soubor proto nepředá programům bsdtar ani unshield. Tato vazba brání tomu, aby změněný archiv předal externímu extraktoru škodlivou cestu pro průchod adresářů (path traversal). Skript není obecným extraktorem jiných instalátorů.

Vložený parser nejprve bez zápisu ověří DOS a PE hlavičky, rozsahy všech sekcí, počet streamů, ukončení a dekódování UTF-16LE, číselné délky, cesty, duplicity a rozsahy všech devíti payloadů. Adresář installshield/ vytvoří až po validaci celé tabulky. Potom předá pouze identifikovaný data1.cab programu unshield.

Kompletní inventura obsahuje 61 souborů. driver-files.tsv má pro každý soubor relativní cestu, velikost, SHA-256 a výsledek file. Inventura neobsahuje absolutní cestu.

Modelová konfigurace

INF vytváří tento přímý řetězec:

[CFL]
CopyFiles=@CFLJJ.PCD,MIMAKI_CF,MIMAKIMON
DataSection=CFL_DATA

[CFL_DATA]
DriverFile=MMKPLT.DLL
ConfigFile=MMK_UI.DLL
DataFile=CFLJJ.PCD
LanguageMonitor="MIMAKI Port Monitor2,MPMSERV_1.dll"

CFLJJ.PCD je v x86 a amd64 shodný soubor s SHA-256 15e8fe9037d518f09dee5f12e928def5f3deb04da662731e58cb905ccd723d51.

Klíč PCD Hodnota Dopad
NickName CFL váže konfiguraci na modelovou rodinu CFL
MODEL 11 volí modelovou větev sdíleného generátoru
CUTTING 1 zapíná řezací režim vektorového ovladače
PAGEINIT IN; potvrzuje první modelový inicializační příkaz a oddělovač ;
PENNOMAX 6 potvrzuje šest logických pozic pera
COMMAND MGL-IIc 1 volí generátor MGL-IIc; veřejný manuál stroje upřesňuje dialekt MGL-IIc3

PCD neobsahuje fyzickou mapu šesti per, převod souřadnic ani serializaci profilových hodnot.

Relevantní PE moduly

Modul Architektura Velikost SHA-256 Protokolový význam
payload/Printer_amd64/MMKPLT.dll PE32+, x86-64 207 872 B 611da823f97b5f83afa94c28e8b705c61b7cce44d72ab14478a077e0c1029712 generátor MGL a vektorový tiskový ovladač
payload/Printer_x86/MMKPLT.dll PE32, Intel 80386 178 469 B 6631893114b6c259ccf339c5ad488f97f5b14094d7918af678b849b258ffb8b2 stejná role pro x86
payload/Printer_amd64/MMK_UI.dll PE32+, x86-64 568 832 B 776a7c85ab85e42b7f5d36387b208d6af71240b0802e58f4129be95ca499bcd6 UI a uložení řezných podmínek
payload/Printer_x86/MMK_UI.dll PE32, Intel 80386 530 629 B 067aa61fe194d4f6cd7410c4cd06644458eab621ae1c8f6c33a885486ce7b3ea stejná role pro x86
payload/PortMonitor_amd64/mpmserv_1.dll PE32+, x86-64 20 992 B 3dde1e24123f4803ae66a6315f87fa9ec447a23dcbb0e2432d2b9b5d9038ad1d jazykový monitor CFL a vlastní monitor lokálního zařízení
payload/PortMonitor_x86/mpmserv_1.dll PE32, Intel 80386 13 824 B 795bb228d6ec537ead6778cff478b31fca1d30ad579f32b74acd3da7ebcc0e33 stejná role pro x86

Generátor MGL

MMKPLT.dll splňuje tři nezávislé podmínky identifikace:

  1. MMKCUT.INF jej přiřazuje sekci CFL_DATA jako DriverFile.
  2. Exportuje DrvEnableDriver a importuje GDI operace vektorové cesty včetně PATHOBJ_bEnum a PATHOBJ_vEnumStart.
  3. Importuje WritePrinter, obsahuje text MGL-IIc, klíče MODEL, PENNOMAX a PAGEINIT a krátké příkazové řetězce.
Offset v amd64 souboru Fragment Co lze uzavřít
0x0b40 PAPU0,0; generátor skládá ASCII mnemoniky a číselné parametry zakončené ;
0x0d00 SP0NR; sdílený generátor obsahuje výběr pera a další mnemoniky
0x0d08 PUSP0; sdílený generátor kombinuje zdvih a výběr pera
0x0d14 !PG0; existuje kandidát proprietárního příkazu
0x0d20 ;PR;PU0,0; existují relativní režim a zdvih nástroje
0x0d2c až 0x0d44 PU;JP, PU;JR, ;JE;, PU;;;; existují kandidáti ukončení nebo přechodu stavu

Binárka obsluhuje více modelů. Kromě IN; z CFLJJ.PCD proto žádný uvedený fragment ještě není prokázanou sekvencí CFL. Task 4 musí najít větev MODEL=11 a volající funkce.

Transport

INF tiskárny registruje MPMSERV_1.dll jako LanguageMonitor. Samostatný monitor.inf registruje stejný modul jako PortMonitorDll. Modul exportuje InitializePrintMonitor2 a importuje:

  • SetupDiGetClassDevsW, SetupDiEnumDeviceInterfaces a SetupDiGetDeviceInterfaceDetailW;
  • CreateFileW, DeviceIoControl, WriteFile a GetOverlappedResult;
  • OpenPrinterW, SetJobW a ClosePrinter.

Modul nemá statické importy socket, connect, send, recv, shutdown, closesocket ani knihovny Winsock. Neobsahuje řetězce 11110, TCP, UDP, RAW ani SNMP. Tento nález neprokazuje absenci dynamicky vyvolané síťové operace, handshake ani transformace proudu přes callbacky monitoru.

Pro Ethernet dokumentace Mimaki na S02 ručně vybírá Standard TCP/IP Port Monitor, režim RAW a port 11110. Microsoft na S06 potvrzuje, že právě takto zvolený systémový monitor posílá tisková data přes TCP na nastavený port. Archiv ovladače neobsahuje konfiguraci konkrétní tiskárny a neprokazuje, že každá úloha používá tento port.

InitializePrintMonitor2 vrací tabulku callbacků monitoru a jazykový monitor může volat podřízený monitor přes ukazatele funkcí. Task 4 musí určit callbacky StartDocPort, WritePort, ReadPort, EndDocPort a ClosePort a jejich vazbu na zvolený port. Teprve potom může určit řetězec úlohy a případnou transformaci nebo handshake.

Vazba na otevřené otázky

ID Přímý nález Stav po Tasku 3
Q01 S02 ručně volí Standard TCP/IP Port Monitor; INF současně dokládají obě role MPMSERV_1.dll konkrétní řetězec jedné úlohy, zvolený port, počet spojení a okamžik zavření zůstávají neověřené
Q02 MMKPLT.dll končí na WritePrinter; MPMSERV_1.dll nemá statické síťové importy, ale může volat podřízený monitor první callback, handshake, transformace a první skutečný síťový bajt zůstávají neověřené
Q03 CFL přímo používá IN;; středník je přímý oddělovač příkazů epilog a jeho volající větev zůstávají neověřené
Q04 sdílený generátor obsahuje PU, PA a PR; tisková cesta enumeruje PATHOBJ pohyb s nástrojem dole a formát bodu zůstávají neověřené
Q05 PCD volí model 11; generátor používá GDI transformace a MulDiv konstanty jednotek, osy a znaménka zůstávají neověřené
Q06 PCD dovoluje šest per; sdílený generátor obsahuje SP1 a SP0 fyzická mapa nástrojů CFL zůstává neověřená
Q07 UI a nápověda potvrzují rychlost, tlak, offset a nulovou hodnotu s prioritou stroje bajtový formát, jednotky a zaokrouhlení zůstávají neověřené
Q08 UI obsahuje volby Pass, Auto a číslo nástroje opakování geometrie nebo samostatný příkaz zůstávají neověřené
Q09 MPMSERV_1.dll neimportuje ReadFile, ale jeho tabulka může obsahovat ReadPort; S02 vypíná SNMP jen pro ručně zvolený standardní port čtecí callbacky, vazba na zvolený port, RAW odpovědi a SNMP zůstávají neověřené
Q10 UI obsahuje registrační značky a mapu hledání 1 až 4 bodů na hodnoty 0 až 4 MGL sekvence a očekávaný stav zůstávají neověřené

Žádná otázka Qxx ještě nesplnila svou úplnou podmínku uzavření. Task 3 proto žádnou otázku neodstraňuje.

Moduly vyřazené z další protokolové analýzy

  • Setup.exe, ISSetup.dll, isrt.dll, _isres_*.dll, MmkSetup.dll, dotnetinstaller.exe a ISBEW64.exe patří instalačnímu enginu.
  • MPMUI_1.dll, MBrowse.dll a mploc*.ini obsluhují dialog monitoru a výběr adresáře. MBrowse.dll exportuje pouze ChangeFolder.
  • MCF*.chm, CLocalize*.ini, licence, tabulky řetězců a paleta popisují UI. Nápověda zpřesnila význam hodnoty nula, ale neobsahuje bajtový protokol.
  • MMK_UI.dll zůstává pouze podpůrným zdrojem názvů a rozsahů. Nemá důkaz, že zapisuje MGL proud.

Task 4 má dále analyzovat MMKPLT.dll, větev modelu 11, tabulku callbacků MPMSERV_1.dll a vazbu callbacků na zvolený port. Systémový Standard TCP/IP Port Monitor je relevantní pouze pro ručně zvolenou konfiguraci S02.

Reprodukční prostředí

  • bsdtar 3.5.3, libarchive 3.7.4;
  • Python 3.14.6, pouze standardní knihovna;
  • unshield 1.6.2;
  • file 5.41;
  • Apple LLVM objdump 17.0.0.

Pracovní výpisy objdump, ASCII řetězce, výpisy PE prostředků a rozbalená nápověda zůstávají v ignorovaném adresáři extracted/.