Şimdi Ara

EPSON WORKFORCE PRO SERİSİ YAZICILAR (8. sayfa)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
253
Cevap
8
Favori
19.614
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
4 oy
Öne Çıkar
Sayfa: önceki 678910
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • Firmware dosyasını hangi programla açabildiniz ?
  • stumm kullanıcısına yanıt
    hocam şöyle;

    firmware paketini açtığınızda içinden çıkan dosyalar var; "FWG238TL.efu" adında uzantısı EFU olan bir dosya var; bu dosya aslında "zip" olarak sıkıştırılmış dosya.

    o dosyayı mesela 7zip ile açarsanız içerisinden "FWG238TL.rcx" adında EPSON a özel bir dosya çıkıyor. bu dosyanın baş tarafı ini formatı gibi bir formatda devamı ise binary;

    baş tarafında;


    RCX
    SEIKO EPSON EpsonNet Form
    [A]
    1="2"
    2="11"
    13="3"
    16="*.CV*.FY17"
    [B]
    1="TRUE"
    2="TRUE"
    3="10"
    4="900"
    5="FALSE"
    6="FALSE"
    [D]
    1="FW Package"
    2="Firmware"
    3="99.99.CV99Z9.FY17"
    4="$(0,12)"
    5="TRUE"
    7="$(10,1)+$(11,1)+$(8,2)"
    [Z_1]
    5="202952704"


    şeklinde text bilgiler var, devamı ise binary formatda..

    FWG238TL.rcx dosyasını "binwalk" kullanarak (https://github.com/ReFirmLabs/binwalk/releases) açabilirsiniz.

    "binwalk -e -M FWG238TL.rcx" komutu ile dosyayı dump edebilirsiniz ama içini biraz deşmeniz gerekiyor

    bir kısmı yanlış olmakla birlikte şöyle bir şey dökülüyor ortaya;

    asıl kurcalamanız gerekn kısım "squashfs" uzantılı dosyalar, o dosyaları 7zip ile extract edebilirsiniz..


    Scan Time: 2020-04-27 15:11:45
    Target File: FWG238TL.rcx
    MD5 Checksum: ec8c106c7b6b48ac8f57e122d8f199fa
    Signatures: 391

    DECIMAL HEXADECIMAL DESCRIPTION
    --------------------------------------------------------------------------------
    7770716 0x76925C XML document, version: "1.0"
    8591575 0x8318D7 HTML document header
    9173359 0x8BF96F PDF document, version: "1.4"
    12074241 0xB83D01 SHA256 hash constants, little endian
    13733904 0xD19010 Copyright string: "Copyright(c) 1993 orporation All s rrved."
    14836017 0xE26131 uImage header, header size: 64 bytes, header CRC: 0xCB1D5FD4, created: 2018-02-20 10:37:37, image size: 1265836 bytes, Data Address: 0x40008000, Entry Point: 0x40008000, data CRC: 0x9F02FC22, OS: Linux, CPU: ARM, image type: OS Kernel Image, compression type: none, image name: "Linux-2.6.35.8-arm1"
    14836081 0xE26171 Linux kernel ARM boot executable zImage (little-endian)
    14843969 0xE28041 LZMA compressed data, properties: 0x5D, dictionary size: 33554432 bytes, uncompressed size: -1 bytes
    16146705 0xF66111 Squashfs filesystem, little endian, version 4.0, compression:xz, size: 3194054 bytes, 779 inodes, blocksize: 131072 bytes, created: 2018-02-20 10:41:02
    19489041 0x1296111 Squashfs filesystem, little endian, version 4.0, compression:xz, size: 3987562 bytes, 77 inodes, blocksize: 131072 bytes, created: 2018-07-04 04:01:25
    25387281 0x1836111 Squashfs filesystem, little endian, version 4.0, compression:xz, size: 11345390 bytes, 63 inodes, blocksize: 524288 bytes, created: 2018-07-04 04:01:43
    37708049 0x23F6111 Squashfs filesystem, little endian, version 4.0, compression:xz, size: 732490 bytes, 13 inodes, blocksize: 524288 bytes, created: 2015-06-01 05:30:41
    39037750 0x253AB36 JPEG image data, EXIF standard
    39088859 0x25472DB GIF image data, version "89a", 43 x 34
    72822582 0x4572F36 eCos RTOS string reference: "ECOSAHAKUNKLaoaongoNGCP_A_2orwPaB_B_BtnClgPopsiTitmDoctabondasp2whitlLkrtugueP"
    73998003 0x4691EB3 Broadcom header, number of sections: 1095706465,
    74825425 0x475BED1 JPEG image data, EXIF standard
    104603718 0x63C2046 MySQL MISAM index file Version 1
    105292124 0x646A15C Copyright string: "Copyright HanYang I&C.,LTD. 200GRHYGTReu"
    105418306 0x6488E42 Copyright string: "Copyright (c) 2000, Modular Infotech, PuneINDIASHSJHindR"
    106717480 0x65C6128 MySQL ISAM compressed data file Version 7
    110745075 0x699D5F3 MySQL ISAM compressed data file Version 1
    111343011 0x6A2F5A3 MySQL MISAM compressed data file Version 5
    111882650 0x6AB319A MySQL MISAM index file Version 11
    112432902 0x6B39706 MySQL ISAM compressed data file Version 6
    112859428 0x6BA1924 MySQL ISAM index file Version 5
    113616532 0x6C5A694 Cisco IOS experimental microcode, for ""
    114762168 0x6D721B8 MySQL ISAM index file Version 1
    117052955 0x6FA161B MySQL ISAM index file Version 1
    118343912 0x70DC8E8 MySQL MISAM compressed data file Version 7
    119074367 0x718EE3F MySQL MISAM index file Version 2
    135459421 0x812F25D Copyright string: "Copyright: (C) 2000 SEIKO EPSON CORP. All rights reserved."
    137147473 0x82CB451 Copyright string: "Copyright: (C) 2000 SEIKO EPSON CORP. All rights reserved."
    139912039 0x856E367 xz compressed data
    139914111 0x856EB7F xz compressed data
    139916167 0x856F387 xz compressed data
    139955083 0x8578B8B xz compressed data
    139993223 0x8582087 xz compressed data
    140031723 0x858B6EB xz compressed data
    140069919 0x8594C1F xz compressed data
    140115455 0x859FDFF xz compressed data
    140160431 0x85AADAF xz compressed data
    140200131 0x85B48C3 xz compressed data
    140237851 0x85BDC1B xz compressed data
    140275543 0x85C6F57 xz compressed data
    140322295 0x85D25F7 xz compressed data
    140368671 0x85DDB1F xz compressed data
    140412447 0x85E861F xz compressed data
    140478839 0x85F8977 xz compressed data
    140524415 0x8603B7F xz compressed data
    140591887 0x861430F xz compressed data
    140644671 0x862113F xz compressed data
    140683955 0x862AAB3 xz compressed data
    140722987 0x863432B xz compressed data
    140739603 0x8638413 xz compressed data
    140757747 0x863CAF3 xz compressed data
    140804731 0x864827B xz compressed data
    140854143 0x865437F xz compressed data
    140900271 0x865F7AF xz compressed data
    140949379 0x866B783 xz compressed data
    140996211 0x8676E73 xz compressed data
    141045947 0x86830BB xz compressed data
    141093315 0x868E9C3 xz compressed data
    141143691 0x869AE8B xz compressed data
    141189879 0x86A62F7 xz compressed data
    141237675 0x86B1DAB xz compressed data
    141284283 0x86BD3BB xz compressed data
    141333255 0x86C9307 xz compressed data
    141384867 0x86D5CA3 xz compressed data
    141409135 0x86DBB6F xz compressed data
    141456119 0x86E72F7 xz compressed data
    141505283 0x86F3303 xz compressed data
    141553167 0x86FEE0F xz compressed data
    141602543 0x870AEEF xz compressed data
    141651875 0x8716FA3 xz compressed data
    141708651 0x8724D6B xz compressed data
    141758811 0x873115B xz compressed data
    141811815 0x873E067 xz compressed data
    141851339 0x8747ACB xz compressed data
    141905511 0x8754E67 xz compressed data
    141960747 0x876262B xz compressed data
    142014443 0x876F7EB xz compressed data
    142068999 0x877CD07 xz compressed data
    142110887 0x87870A7 xz compressed data
    142151571 0x8790F93 xz compressed data
    142192199 0x879AE47 xz compressed data
    142242239 0x87A71BF xz compressed data
    142277699 0x87AFC43 xz compressed data
    142306559 0x87B6CFF xz compressed data
    142358135 0x87C3677 xz compressed data
    142397679 0x87CD0EF xz compressed data
    142436167 0x87D6747 xz compressed data
    142453955 0x87DACC3 xz compressed data
    142471779 0x87DF263 xz compressed data
    142489819 0x87E38DB xz compressed data
    142515175 0x87E9BE7 xz compressed data
    142540803 0x87F0003 xz compressed data
    142563995 0x87F5A9B xz compressed data
    142587507 0x87FB673 xz compressed data
    142614519 0x8801FF7 xz compressed data
    142641659 0x88089FB xz compressed data
    142661819 0x880D8BB xz compressed data
    142682023 0x88127A7 xz compressed data
    142719639 0x881BA97 xz compressed data
    142756993 0x8824C81 Copyright string: "Copyright(c) 1999 SEIKO EPSON Corporation All rights reserved."
    142823498 0x883504A Copyright string: "Copyright(c) 1999 SEIKO EPSON Corporation All rights reserved."
    142875700 0x8841C34 Copyright string: "Copyright(c) 1999 SEIKO EPSON Corporation All rights reserved."
    142930738 0x884F332 Copyright string: "Copyright(c) 1999 SEIKO EPSON Corporation All rights reserved."
    142995458 0x885F002 Copyright string: "Copyright(c) 1999 SEIKO EPSON Corporation All rights reserved."
    143044649 0x886B029 Copyright string: "Copyright(c) 1999 SEIKO EPSON Corporation All rights reserved."
    143091942 0x88768E6 Copyright string: "Copyright(c) 1998 SEIKO EPSON Corporation All rights reserved."
    143137261 0x88819ED Copyright string: "Copyright(c) 1992 SEIKO EPSON Corporation All rights reserved."
    143144627 0x88836B3 Copyright string: "Copyright(c) 1999 SEIKO EPSON Corporation All rights reserved."
    143234993 0x88997B1 Copyright string: "Copyright(c) 1999 SEIKO EPSON Corporation All rights reserved."
    143264573 0x88A0B3D Copyright string: "Copyright(c) 1999 SEIKO EPSON Corporation All rights reserved."
    147911573 0x8D0F395 MPEG transport stream data
    148632686 0x8DBF46E Copyright string: "Copyright Duplication."
    148911464 0x8E03568 Copyright string: "copyrightserif"
    148911639 0x8E03617 Copyright string: "copyrightsans"
    149515233 0x8E96BE1 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    149517682 0x8E97572 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    149546541 0x8E9E62D Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    149579479 0x8EA66D7 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    149583455 0x8EA765F Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. "
    149584742 0x8EA7B66 Copyright string: "Copyright 2000 Adobe Systems, Inc."
    149740089 0x8ECDA39 Certificate in DER format (x509 v3), header length: 4, sequence length: 22488
    150141794 0x8F2FB62 Copyright string: "Copyright(C) SEIKO EPSON CORP. 2008"
    150150718 0x8F31E3E Copyright string: "Copyright (c) SEIKO EPSON CORPORATION 2000 - 2006. All rights reserved."
    150152080 0x8F32390 Copyright string: "Copyright 2002 Adobe Systems, Inc."
    150709248 0x8FBA400 Copyright string: "Copyright 2000 Adobe Systems, Inc."
    151266107 0x904233B Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151279133 0x904561D Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151280600 0x9045BD8 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151293506 0x9048E42 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151306563 0x904C143 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151308037 0x904C705 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151309476 0x904CCA4 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151324204 0x905062C Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151326658 0x9050FC2 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151331868 0x905241C Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151336137 0x90534C9 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151338611 0x9053E73 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151342847 0x9054EFF Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151345308 0x905589C Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151351886 0x905724E Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151357280 0x9058760 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151370350 0x905BA6E Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151383587 0x905EE23 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151385657 0x905F639 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151387693 0x905FE2D Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151389288 0x9060468 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151390854 0x9060A86 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151392516 0x9061104 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151395799 0x9061DD7 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151397264 0x9062390 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151410901 0x90658D5 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151424703 0x9068EBF Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151426431 0x906957F Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151428124 0x9069C1C Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151431287 0x906A877 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151432350 0x906AC9E Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151433388 0x906B0AC Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151434340 0x906B464 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151435292 0x906B81C Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151436246 0x906BBD6 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151451656 0x906F808 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151453501 0x906FF3D Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151456831 0x9070C3F Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151458303 0x90711FF Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151459231 0x907159F Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151459745 0x90717A1 Copyright string: "copyright"
    151626368 0x909A280 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151627441 0x909A6B1 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151627964 0x909A8BC Copyright string: "copyright"
    151632689 0x909BB31 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151633203 0x909BD33 Copyright string: "copyright"
    151637845 0x909CF55 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151800759 0x90C4BB7 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151805105 0x90C5CB1 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151806543 0x90C624F Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151868794 0x90D557A Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151870716 0x90D5CFC Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151872637 0x90D647D Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151874558 0x90D6BFE Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151876479 0x90D737F Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151878400 0x90D7B00 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151880321 0x90D8281 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151882242 0x90D8A02 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151884163 0x90D9183 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    151946718 0x90E85DE Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    152564526 0x917F32E Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    152999545 0x91E9679 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    153644981 0x9286FB5 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    153785551 0x92A94CF Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    153839493 0x92B6785 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    153893437 0x92C3A3D Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    153965771 0x92D54CB Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    153967183 0x92D5A4F Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    153977258 0x92D81AA Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    153994452 0x92DC4D4 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    154011594 0x92E07CA Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    154027985 0x92E47D1 Copyright string: "Copyright (c) 1987-2012 Cambridge Silicon Radio Limited. All rights reserved."
    154159758 0x9304A8E Copyright string: "Copyright (c) 1988-1996 Sam Leffler"
    154159794 0x9304AB2 Copyright string: "Copyright (c) 1991-1996 Silicon Graphics, Inc."
    154189573 0x930BF05 VxWorks symbol table, big endian, first entry: [type: function, code address: 0x200, symbol address: 0x400]
    154478791 0x93528C7 SHA256 hash constants, little endian
    154504546 0x9358D62 Copyright string: "Copyright (C) 1998, Thomas G. Lane"
    154522601 0x935D3E9 Copyright string: "Copyright (c) 1987-2014 Cambridge Silicon Radio Limited"

    ....



    < Bu mesaj bu kişi tarafından değiştirildi baybay17 -- 27 Nisan 2020; 15:21:15 >




  • chipless lisanslama yazılımını inceledim biraz;

    yazılım http üzerinden kore de bir adrese bağlanıp verileri gönderiyor ve karşılık gelen datayı alıyor;


    .text:00408FE1 68 00 04 00 00 push 400h ; size_t
    .text:00408FE6 8D 94 24 50 02 00 00 lea edx, [esp+660h+Src]
    .text:00408FED 57 push edi ; int
    .text:00408FEE 52 push edx ; void *
    .text:00408FEF C6 84 24 64 06 00 00 02 mov byte ptr [esp+668h+var_4], 2
    .text:00408FF7 E8 84 AA 00 00 call _memset
    .text:00408FFC 83 C4 0C add esp, 0Ch
    .text:00408FFF 68 D4 60 57 00 push offset aApiPubEpsonPri ; "/api/pub/epson/printer_auth2"
    .text:00409004 68 84 21 00 00 push 8580
    .text:00409009 68 28 58 57 00 push offset a11010147170 ; "110.10.147.170"
    .text:0040900E 8D 84 24 58 01 00 00 lea eax, [esp+668h+var_510]
    .text:00409015 68 CC 60 57 00 push offset aSDS ; "%s:%d%s"
    .text:0040901A 50 push eax ; char *
    .text:0040901B E8 30 41 00 00 call _sprintf
    .text:00409020 8B 94 24 78 06 00 00 mov edx, [esp+670h+arg_4]
    .text:00409027 8B C2 mov eax, edx
    .text:00409029 83 C4 14 add esp, 14h
    .text:0040902C C7 44 24 54 01 00 00 00 mov [esp+65Ch+var_608], 1
    .text:00409034 8D 78 01 lea edi, [eax+1]
    .text:00409037
    .text:00409037 loc_409037: ; CODE XREF: sub_408F60+DC↓j
    .text:00409037 8A 08 mov cl, [eax]
    .text:00409039 40 inc eax
    .text:0040903A 84 C9 test cl, cl
    .text:0040903C 75 F9 jnz short loc_409037
    .text:0040903E 52 push edx
    .text:0040903F 8D 4C 24 40 lea ecx, [esp+660h+var_620]
    .text:00409043 2B C7 sub eax, edi
    .text:00409045 51 push ecx
    .text:00409046 8B C8 mov ecx, eax
    .text:00409048 BA F4 60 57 00 mov edx, offset aKey ; "key"
    .text:0040904D E8 6E 3E 00 00 call sub_40CEC0
    .text:00409052 BD 10 00 00 00 mov ebp, 10h
    .text:00409057 39 6E 7C cmp [esi+7Ch], ebp
    .text:0040905A 72 05 jb short loc_409061
    .text:0040905C 8B 56 68 mov edx, [esi+68h]
    .text:0040905F EB 03 jmp short loc_409064
    .text:00409061 ; ---------------------------------------------------------------------------
    .text:00409061
    .text:00409061 loc_409061: ; CODE XREF: sub_408F60+FA↑j
    .text:00409061 8D 56 68 lea edx, [esi+68h]
    .text:00409064
    .text:00409064 loc_409064: ; CODE XREF: sub_408F60+FF↑j
    .text:00409064 8B C2 mov eax, edx
    .text:00409066 8D 78 01 lea edi, [eax+1]
    .text:00409069 8D A4 24 00 00 00 00 lea esp, [esp+0]
    .text:00409070
    .text:00409070 loc_409070: ; CODE XREF: sub_408F60+115↓j
    .text:00409070 8A 08 mov cl, [eax]
    .text:00409072 40 inc eax
    .text:00409073 84 C9 test cl, cl
    .text:00409075 75 F9 jnz short loc_409070
    .text:00409077 52 push edx
    .text:00409078 8D 54 24 40 lea edx, [esp+660h+var_620]
    .text:0040907C 2B C7 sub eax, edi
    .text:0040907E 52 push edx
    .text:0040907F 8B C8 mov ecx, eax
    .text:00409081 BA F8 60 57 00 mov edx, offset aAuth ; "auth"
    .text:00409086 E8 35 3E 00 00 call sub_40CEC0
    .text:0040908B 39 6E 44 cmp [esi+44h], ebp
    .text:0040908E 72 05 jb short loc_409095
    .text:00409090 8B 56 30 mov edx, [esi+30h]
    .text:00409093 EB 03 jmp short loc_409098
    .text:00409095 ; ---------------------------------------------------------------------------
    .text:00409095
    .text:00409095 loc_409095: ; CODE XREF: sub_408F60+12E↑j
    .text:00409095 8D 56 30 lea edx, [esi+30h]
    .text:00409098
    .text:00409098 loc_409098: ; CODE XREF: sub_408F60+133↑j
    .text:00409098 8B C2 mov eax, edx
    .text:0040909A 8D 78 01 lea edi, [eax+1]
    .text:0040909D 8D 49 00 lea ecx, [ecx+0]
    .text:004090A0
    .text:004090A0 loc_4090A0: ; CODE XREF: sub_408F60+145↓j
    .text:004090A0 8A 08 mov cl, [eax]
    .text:004090A2 40 inc eax
    .text:004090A3 84 C9 test cl, cl
    .text:004090A5 75 F9 jnz short loc_4090A0
    .text:004090A7 52 push edx
    .text:004090A8 8D 4C 24 40 lea ecx, [esp+660h+var_620]
    .text:004090AC 2B C7 sub eax, edi
    .text:004090AE 51 push ecx
    .text:004090AF 8B C8 mov ecx, eax
    .text:004090B1 BA 00 61 57 00 mov edx, offset aPrnSerial ; "prn_serial"
    .text:004090B6 E8 05 3E 00 00 call sub_40CEC0
    .text:004090BB 8B C3 mov eax, ebx
    .text:004090BD 8D 50 01 lea edx, [eax+1]
    .text:004090C0
    .text:004090C0 loc_4090C0: ; CODE XREF: sub_408F60+165↓j
    .text:004090C0 8A 08 mov cl, [eax]
    .text:004090C2 40 inc eax
    .text:004090C3 84 C9 test cl, cl
    .text:004090C5 75 F9 jnz short loc_4090C0
    .text:004090C7 2B C2 sub eax, edx
    .text:004090C9 53 push ebx
    .text:004090CA 8D 54 24 40 lea edx, [esp+660h+var_620]
    .text:004090CE 52 push edx
    .text:004090CF 8B C8 mov ecx, eax
    .text:004090D1 BA 0C 61 57 00 mov edx, offset aKeyType ; "key_type"
    .text:004090D6 E8 E5 3D 00 00 call sub_40CEC0
    .text:004090DB 39 6E 60 cmp [esi+60h], ebp
    .text:004090DE 72 05 jb short loc_4090E5
    .text:004090E0 8B 76 4C mov esi, [esi+4Ch]
    .text:004090E3 EB 03 jmp short loc_4090E8
    .text:004090E5 ; ---------------------------------------------------------------------------
    .text:004090E5
    .text:004090E5 loc_4090E5: ; CODE XREF: sub_408F60+17E↑j
    .text:004090E5 83 C6 4C add esi, 4Ch ; 'L'
    .text:004090E8
    .text:004090E8 loc_4090E8: ; CODE XREF: sub_408F60+183↑j
    .text:004090E8 8B C6 mov eax, esi
    .text:004090EA 8D 50 01 lea edx, [eax+1]
    .text:004090ED 8D 49 00 lea ecx, [ecx+0]
    .text:004090F0
    .text:004090F0 loc_4090F0: ; CODE XREF: sub_408F60+195↓j
    .text:004090F0 8A 08 mov cl, [eax]
    .text:004090F2 40 inc eax
    .text:004090F3 84 C9 test cl, cl
    .text:004090F5 75 F9 jnz short loc_4090F0
    .text:004090F7 2B C2 sub eax, edx
    .text:004090F9 56 push esi
    .text:004090FA 8D 4C 24 40 lea ecx, [esp+660h+var_620]
    .text:004090FE 51 push ecx
    .text:004090FF 8B C8 mov ecx, eax
    .text:00409101 BA 18 61 57 00 mov edx, offset aModelName ; "model_name"
    .text:00409106 E8 B5 3D 00 00 call sub_40CEC0
    .text:0040910B 8D 8C 24 4C 01 00 00 lea ecx, [esp+65Ch+var_510]
    .text:00409112 8D 7C 24 3C lea edi, [esp+65Ch+var_620]
    .text:00409116 E8 05 3B 00 00 call ge_http_request
    .text:0040911B 8B F0 mov esi, eax
    .text:0040911D 85 F6 test esi, esi
    .text:0040911F 7C 0E jl short loc_40912F
    .text:00409121 8D 54 24 20 lea edx, [esp+65Ch+var_63C]
    .text:00409125 52 push edx
    .text:00409126 E8 45 3F 00 00 call sub_40D070
    .text:0040912B 8B F0 mov esi, eax
    .text:0040912D EB 0E jmp short loc_40913D
    .text:0040912F ; ---------------------------------------------------------------------------
    .text:0040912F
    .text:0040912F loc_40912F: ; CODE XREF: sub_408F60+1BF↑j
    .text:0040912F 6A 00 push 0 ; unsigned int
    .text:00409131 6A 00 push 0 ; uType
    .text:00409133 68 F0 62 57 00 push offset aInternetConnec ; "Internet Connection Fail : OpenUrl Erro"...
    .text:00409138 E8 FF A9 01 00 call AfxMessageBox(char const *,uint,uint)
    .text:0040913D
    .text:0040913D loc_40913D: ; CODE XREF: sub_408F60+1CD↑j
    .text:0040913D 85 F6 test esi, esi
    .text:0040913F 0F 8E EC 01 00 00 jle loc_409331
    .text:00409145 8B 7C 24 24 mov edi, [esp+65Ch+var_638]
    .text:00409149 39 6C 24 38 cmp [esp+65Ch+var_624], ebp
    .text:0040914D 73 04 jnb short loc_409153
    .text:0040914F 8D 7C 24 24 lea edi, [esp+65Ch+var_638]
    .text:00409153
    .text:00409153 loc_409153: ; CODE XREF: sub_408F60+1ED↑j
    .text:00409153 E8 18 AA FF FF call sub_403B70
    .text:00409158 8B E8 mov ebp, eax
    .text:0040915A 33 F6 xor esi, esi
    .text:0040915C 3B EE cmp ebp, esi
    .text:0040915E 75 4D jnz short loc_4091AD
    .text:00409160 E8 F3 99 01 00 call AfxGetThread(void)
    .text:00409165 3B C6 cmp eax, esi
    .text:00409167 74 0D jz short loc_409176
    .text:00409169 8B 10 mov edx, [eax]
    .text:0040916B 8B C8 mov ecx, eax
    .text:0040916D 8B 42 74 mov eax, [edx+74h]
    .text:00409170 FF D0 call eax
    .text:00409172 3B C6 cmp eax, esi
    .text:00409174 75 04 jnz short loc_40917A
    .text:00409176
    .text:00409176 loc_409176: ; CODE XREF: sub_408F60+207↑j
    .text:00409176 ; sub_408F60+27D↓j
    .text:00409176 33 C0 xor eax, eax
    .text:00409178 EB 03 jmp short loc_40917D
    .text:0040917A ; ---------------------------------------------------------------------------
    .text:0040917A
    .text:0040917A loc_40917A: ; CODE XREF: sub_408F60+214↑j
    .text:0040917A ; sub_408F60+28A↓j
    .text:0040917A 8B 40 20 mov eax, [eax+20h]
    .text:0040917D
    .text:0040917D loc_40917D: ; CODE XREF: sub_408F60+218↑j
    .text:0040917D ; sub_408F60+28E↓j
    .text:0040917D 6A 40 push 40h ; '@' ; uType
    .text:0040917F 68 C8 58 57 00 push offset Caption ; "ELicenceMgr"
    .text:00409184 68 24 61 57 00 push offset Text ; "Internet communication is lost. Try it "...
    .text:00409189 50 push eax ; hWnd
    .text:0040918A FF 15 6C C7 54 00 call ds:MessageBoxA
    .text:00409190 83 7C 24 38 10 cmp [esp+65Ch+var_624], 10h
    .text:00409195 72 0D jb short loc_4091A4
    .text:00409197 8B 4C 24 24 mov ecx, [esp+65Ch+var_638]
    .text:0040919B 51 push ecx ; void *
    .text:0040919C E8 75 45 00 00 call operator delete(void *)
    .text:004091A1 83 C4 04 add esp, 4
    .text:004091A4
    .text:004091A4 loc_4091A4: ; CODE XREF: sub_408F60+235↑j
    .text:004091A4 89 74 24 34 mov [esp+65Ch+var_628], esi
    .text:004091A8 E9 CF 01 00 00 jmp loc_40937C
    .text:004091AD ; ---------------------------------------------------------------------------
    .text:004091AD
    .text:004091AD loc_4091AD: ; CODE XREF: sub_408F60+1FE↑j
    .text:004091AD 56 push esi
    .text:004091AE 6A 01 push 1
    .text:004091B0 56 push esi
    .text:004091B1 55 push ebp
    .text:004091B2 E8 39 AB FF FF call sub_403CF0
    .text:004091B7 89 44 24 28 mov [esp+66Ch+var_644], eax
    .text:004091BB 8B 45 08 mov eax, [ebp+8]
    .text:004091BE 83 C4 10 add esp, 10h
    .text:004091C1 33 C9 xor ecx, ecx
    .text:004091C3 3B C6 cmp eax, esi
    .text:004091C5 74 0F jz short loc_4091D6
    .text:004091C7
    .text:004091C7 loc_4091C7: ; CODE XREF: sub_408F60+26C↓j
    .text:004091C7 8B 00 mov eax, [eax]
    .text:004091C9 41 inc ecx
    .text:004091CA 3B C6 cmp eax, esi
    .text:004091CC 75 F9 jnz short loc_4091C7
    .text:004091CE 3B CE cmp ecx, esi
    .text:004091D0 89 4C 24 1C mov [esp+65Ch+var_640], ecx
    .text:004091D4 7F 1A jg short loc_4091F0
    .text:004091D6
    .text:004091D6 loc_4091D6: ; CODE XREF: sub_408F60+265↑j
    .text:004091D6 E8 7D 99 01 00 call AfxGetThread(void)
    .text:004091DB 3B C6 cmp eax, esi
    .text:004091DD 74 97 jz short loc_409176
    .text:004091DF 8B 10 mov edx, [eax]
    .text:004091E1 8B C8 mov ecx, eax
    .text:004091E3 8B 42 74 mov eax, [edx+74h]
    .text:004091E6 FF D0 call eax
    .text:004091E8 3B C6 cmp eax, esi
    .text:004091EA 75 8E jnz short loc_40917A
    .text:004091EC 33 C0 xor eax, eax
    .text:004091EE EB 8D jmp short loc_40917D
    .text:004091F0 ; ---------------------------------------------------------------------------
    .text:004091F0
    .text:004091F0 loc_4091F0: ; CODE XREF: sub_408F60+274↑j
    .text:004091F0 33 DB xor ebx, ebx
    .text:004091F2
    .text:004091F2 loc_4091F2: ; CODE XREF: sub_408F60+32F↓j
    .text:004091F2 68 00 04 00 00 push 400h ; size_t
    .text:004091F7 8D 8C 24 50 02 00 00 lea ecx, [esp+660h+Src]
    .text:004091FE 6A 00 push 0 ; int
    .text:00409200 51 push ecx ; void *
    .text:00409201 E8 7A A8 00 00 call _memset
    .text:00409206 8B 45 08 mov eax, [ebp+8]
    .text:00409209 83 C4 0C add esp, 0Ch
    .text:0040920C 8B CB mov ecx, ebx
    .text:0040920E 85 C0 test eax, eax
    .text:00409210 74 0B jz short loc_40921D
    .text:00409212
    .text:00409212 loc_409212: ; CODE XREF: sub_408F60+2BB↓j
    .text:00409212 85 C9 test ecx, ecx
    .text:00409214 7E 07 jle short loc_40921D
    .text:00409216 8B 00 mov eax, [eax]
    .text:00409218 49 dec ecx
    .text:00409219 85 C0 test eax, eax
    .text:0040921B 75 F5 jnz short loc_409212
    .text:0040921D
    .text:0040921D loc_40921D: ; CODE XREF: sub_408F60+2B0↑j
    .text:0040921D ; sub_408F60+2B4↑j
    .text:0040921D 8B 48 20 mov ecx, [eax+20h]
    .text:00409220 BE 5C 61 57 00 mov esi, offset aAuthData ; "auth_data"
    .text:00409225
    .text:00409225 loc_409225: ; CODE XREF: sub_408F60+2DF↓j
    .text:00409225 8A 11 mov dl, [ecx]
    .text:00409227 3A 16 cmp dl, [esi]
    .text:00409229 75 1A jnz short loc_409245
    .text:0040922B 84 D2 test dl, dl
    .text:0040922D 74 12 jz short loc_409241
    .text:0040922F 8A 51 01 mov dl, [ecx+1]
    .text:00409232 3A 56 01 cmp dl, [esi+1]
    .text:00409235 75 0E jnz short loc_409245
    .text:00409237 83 C1 02 add ecx, 2
    .text:0040923A 83 C6 02 add esi, 2
    .text:0040923D 84 D2 test dl, dl
    .text:0040923F 75 E4 jnz short loc_409225
    .text:00409241
    .text:00409241 loc_409241: ; CODE XREF: sub_408F60+2CD↑j
    .text:00409241 33 C9 xor ecx, ecx
    .text:00409243 EB 05 jmp short loc_40924A
    .text:00409245 ; ---------------------------------------------------------------------------
    .text:00409245
    .text:00409245 loc_409245: ; CODE XREF: sub_408F60+2C9↑j
    .text:00409245 ; sub_408F60+2D5↑j
    .text:00409245 1B C9 sbb ecx, ecx
    .text:00409247 83 D9 FF sbb ecx, 0FFFFFFFFh
    .text:0040924A
    .text:0040924A loc_40924A: ; CODE XREF: sub_408F60+2E3↑j
    .text:0040924A 85 C9 test ecx, ecx
    .text:0040924C 75 23 jnz short loc_409271
    .text:0040924E 8B 50 10 mov edx, [eax+10h]
    .text:00409251 8B C2 mov eax, edx
    .text:00409253 8D 70 01 lea esi, [eax+1]
    .text:00409256
    .text:00409256 loc_409256: ; CODE XREF: sub_408F60+2FB↓j
    .text:00409256 8A 08 mov cl, [eax]
    .text:00409258 40 inc eax
    .text:00409259 84 C9 test cl, cl
    .text:0040925B 75 F9 jnz short loc_409256
    .text:0040925D 2B C6 sub eax, esi
    .text:0040925F 50 push eax
    .text:00409260 8D BC 24 50 02 00 00 lea edi, [esp+660h+Src]
    .text:00409267 E8 74 9D FF FF call sub_402FE0
    .text:0040926C 83 C4 04 add esp, 4
    .text:0040926F EB 19 jmp short loc_40928A
    .text:00409271 ; ---------------------------------------------------------------------------
    .text:00409271
    .text:00409271 loc_409271: ; CODE XREF: sub_408F60+2EC↑j
    .text:00409271 8B 48 10 mov ecx, [eax+10h]
    .text:00409274 8D 94 24 4C 02 00 00 lea edx, [esp+65Ch+Src]
    .text:0040927B EB 03 jmp short loc_409280
    .text:0040927B ; ---------------------------------------------------------------------------
    .text:0040927D 8D 49 00 align 10h
    .text:00409280
    .text:00409280 loc_409280: ; CODE XREF: sub_408F60+31B↑j
    .text:00409280 ; sub_408F60+328↓j
    .text:00409280 8A 01 mov al, [ecx]
    .text:00409282 88 02 mov [edx], al
    .text:00409284 41 inc ecx
    .text:00409285 42 inc edx
    .text:00409286 84 C0 test al, al
    .text:00409288 75 F6 jnz short loc_409280
    .text:0040928A
    .text:0040928A loc_40928A: ; CODE XREF: sub_408F60+30F↑j
    .text:0040928A 43 inc ebx
    .text:0040928B 3B 5C 24 1C cmp ebx, [esp+65Ch+var_640]
    .text:0040928F 0F 8C 5D FF FF FF jl loc_4091F2
    .text:00409295 55 push ebp ; void *
    .text:00409296 E8 A5 9F FF FF call sub_403240
    .text:0040929B 8B 54 24 1C mov edx, [esp+660h+var_644]
    .text:0040929F 83 C4 04 add esp, 4
    .text:004092A2 52 push edx ; unsigned __int8 *
    .text:004092A3 E8 24 40 00 00 call _free
    .text:004092A8 8D 84 24 50 02 00 00 lea eax, [esp+660h+Src]
    .text:004092AF 8B CC mov ecx, esp
    .text:004092B1 89 64 24 1C mov [esp+660h+var_644], esp
    .text:004092B5 50 push eax ; Src
    .text:004092B6 E8 75 D3 FF FF call sub_406630
    .text:004092BB 8B 8C 24 64 06 00 00 mov ecx, dword ptr [esp+660h+arg_0]
    .text:004092C2 51 push ecx ; char
    .text:004092C3 E8 28 01 00 00 call sub_4093F0
    .text:004092C8 83 7C 24 38 10 cmp [esp+65Ch+var_624], 10h
    .text:004092CD 8A D8 mov bl, al
    .text:004092CF 72 0D jb short loc_4092DE
    .text:004092D1 8B 54 24 24 mov edx, [esp+65Ch+var_638]
    .text:004092D5 52 push edx ; void *
    .text:004092D6 E8 3B 44 00 00 call operator delete(void *)
    .text:004092DB 83 C4 04 add esp, 4
    .text:004092DE
    .text:004092DE loc_4092DE: ; CODE XREF: sub_408F60+36F↑j
    .text:004092DE 8D 74 24 3C lea esi, [esp+65Ch+var_620]
    .text:004092E2 C7 44 24 38 0F 00 00 00 mov [esp+65Ch+var_624], 0Fh
    .text:004092EA C7 44 24 34 00 00 00 00 mov [esp+65Ch+var_628], 0
    .text:004092F2 C6 44 24 24 00 mov byte ptr [esp+65Ch+var_638], 0
    .text:004092F7 E8 14 37 00 00 call sub_40CA10
    .text:004092FC C7 84 24 58 06 00 00 FF+ mov [esp+65Ch+var_4], 0FFFFFFFFh
    .text:00409307 8B 84 24 64 06 00 00 mov eax, [esp+65Ch+arg_4]
    .text:0040930E 83 C0 F0 add eax, 0FFFFFFF0h
    .text:00409311 8D 48 0C lea ecx, [eax+0Ch]
    .text:00409314 83 CA FF or edx, 0FFFFFFFFh
    .text:00409317 F0 0F C1 11 lock xadd [ecx], edx
    .text:0040931B 4A dec edx
    .text:0040931C 85 D2 test edx, edx
    .text:0040931E 7F 0A jg short loc_40932A
    .text:00409320 8B 08 mov ecx, [eax]
    .text:00409322 8B 11 mov edx, [ecx]
    .text:00409324 50 push eax
    .text:00409325 8B 42 04 mov eax, [edx+4]
    .text:00409328 FF D0 call eax
    .text:0040932A
    .text:0040932A loc_40932A: ; CODE XREF: sub_408F60+3BE↑j
    .text:0040932A 8A C3 mov al, bl
    .text:0040932C E9 91 00 00 00 jmp loc_4093C2
    .text:00409331 ; ---------------------------------------------------------------------------
    .text:00409331
    .text:00409331 loc_409331: ; CODE XREF: sub_408F60+1DF↑j
    .text:00409331 E8 22 98 01 00 call AfxGetThread(void)
    .text:00409336 85 C0 test eax, eax
    .text:00409338 74 0D jz short loc_409347
    .text:0040933A 8B 10 mov edx, [eax]
    .text:0040933C 8B C8 mov ecx, eax
    .text:0040933E 8B 42 74 mov eax, [edx+74h]
    .text:00409341 FF D0 call eax
    .text:00409343 85 C0 test eax, eax
    .text:00409345 75 04 jnz short loc_40934B
    .text:00409347
    .text:00409347 loc_409347: ; CODE XREF: sub_408F60+3D8↑j
    .text:00409347 33 C0 xor eax, eax
    .text:00409349 EB 03 jmp short loc_40934E
    .text:0040934B ; ---------------------------------------------------------------------------
    .text:0040934B
    .text:0040934B loc_40934B: ; CODE XREF: sub_408F60+3E5↑j
    .text:0040934B 8B 40 20 mov eax, [eax+20h]
    .text:0040934E
    .text:0040934E loc_40934E: ; CODE XREF: sub_408F60+3E9↑j
    .text:0040934E 6A 40 push 40h ; '@' ; uType
    .text:00409350 68 C8 58 57 00 push offset Caption ; "ELicenceMgr"
    .text:00409355 68 24 61 57 00 push offset Text ; "Internet communication is lost. Try it "...
    .text:0040935A 50 push eax ; hWnd
    .text:0040935B FF 15 6C C7 54 00 call ds:MessageBoxA
    .text:00409361 39 6C 24 38 cmp [esp+65Ch+var_624], ebp
    .text:00409365 72 0D jb short loc_409374
    .text:00409367 8B 4C 24 24 mov ecx, [esp+65Ch+var_638]
    .text:0040936B 51 push ecx ; void *
    .text:0040936C E8 A5 43 00 00 call operator delete(void *)
    .text:00409371 83 C4 04 add esp, 4
    .text:00409374
    .text:00409374 loc_409374: ; CODE XREF: sub_408F60+405↑j
    .text:00409374 C7 44 24 34 00 00 00 00 mov [esp+65Ch+var_628], 0
    .text:0040937C
    .text:0040937C loc_40937C: ; CODE XREF: sub_408F60+248↑j
    .text:0040937C 8D 74 24 3C lea esi, [esp+65Ch+var_620]
    .text:00409380 C7 44 24 38 0F 00 00 00 mov [esp+65Ch+var_624], 0Fh
    .text:00409388 C6 44 24 24 00 mov byte ptr [esp+65Ch+var_638], 0
    .text:0040938D E8 7E 36 00 00 call sub_40CA10
    .text:00409392 C7 84 24 58 06 00 00 FF+ mov [esp+65Ch+var_4], 0FFFFFFFFh
    .text:0040939D 8B 84 24 64 06 00 00 mov eax, [esp+65Ch+arg_4]
    .text:004093A4 83 C0 F0 add eax, 0FFFFFFF0h
    .text:004093A7 8D 50 0C lea edx, [eax+0Ch]
    .text:004093AA 83 C9 FF or ecx, 0FFFFFFFFh
    .text:004093AD F0 0F C1 0A lock xadd [edx], ecx
    .text:004093B1 49 dec ecx
    .text:004093B2 85 C9 test ecx, ecx
    .text:004093B4 7F 0A jg short loc_4093C0
    .text:004093B6 8B 08 mov ecx, [eax]
    .text:004093B8 8B 11 mov edx, [ecx]
    .text:004093BA 50 push eax
    .text:004093BB 8B 42 04 mov eax, [edx+4]
    .text:004093BE FF D0 call eax
    .text:004093C0
    .text:004093C0 loc_4093C0: ; CODE XREF: sub_408F60+454↑j
    .text:004093C0 32 C0 xor al, al
    .text:004093C2
    .text:004093C2 loc_4093C2: ; CODE XREF: sub_408F60+3CC↑j
    .text:004093C2 8B 8C 24 50 06 00 00 mov ecx, dword ptr [esp+65Ch+var_C]
    .text:004093C9 64 89 0D 00 00 00 00 mov large fs:0, ecx
    .text:004093D0 59 pop ecx
    .text:004093D1 5F pop edi
    .text:004093D2 5E pop esi
    .text:004093D3 5D pop ebp
    .text:004093D4 5B pop ebx
    .text:004093D5 8B 8C 24 38 06 00 00 mov ecx, [esp+648h+var_10]
    .text:004093DC 33 CC xor ecx, esp
    .text:004093DE E8 5E 3D 00 00 call __security_check_cookie(x)
    .text:004093E3 81 C4 48 06 00 00 add esp, 648h
    .text:004093E9 C2 08 00 retn 8
    .text:004093E9 ; } // starts at 408F60
    .text:004093E9 sub_408F60 endp


    bağlandığı site nin normal web adresi şurası; http://110.10.147.170/login

    TnBox Managed Print System, üye olunabiliyor gibi duruyor ama üye olmayı denemedim.

    normal http 80 portundan gözüken bu, ancak yazılım 8580 portuna bağlanıp data gönderip alıyor.

    yazılımın bağlandığı ve geçtiği bilgiler şunlar;

    server adresi:http://110.10.147.170:8580

    devamındaki URL: /api/pub/epson/printer_auth2

    bunun peşine GET request için şu bilgileri koyuyor; key, auth, prn_serial, key_type, model_name

    bu bilgileri gönderip gelen veriye göre bir şeyler yapıyor. ben elimle aşağıdaki gibi sahte birşeyler hazırladım;
    http://110.10.147.170:8580/api/pub/epson/printer_auth2?key=766-702-212-300&prn_serial=X383061002&model_name=WF-C5710%20Series&key_type=1

    tabi "auth" kısmı yok, eleman bana JSON formatında hata mesajı döndü, çok ayıp etti;

    quote:


    {"code":500,"rows":0,"pageNumber":0,"msg":"Error","messageId":0,"reqSize":0,"totalPages":0,"totalElements":0,"last":false,"first":false,"data":null,"error":"500","parent":null,"extData":null}


    bu tarafta düşünürken aslında aklıma başka şeyler de geldi;

    epson kullandığı şeylerin patentini almış ve patentlerden de bayaa bayaa bir şeyler anlaşılabiliyor;

    mesela;
    https://patents.google.com/patent/US7660008B2/en
    https://patents.google.com/patent/US8794749B2/en

    hatta şu patent te nozzle ın çalışması bile bayaa detaylı şekilde var;
    https://patents.google.com/patent/US6758544/de

    mesela her nozzle için 2 bit var, 4 farklı durum ifade ediliyor ya (2^2), bir bit nozzle a dur bekle diyor, diğer üç bir küçük,orta,büyük damla püskürt diyor. piezo kullandığı için piezo ya uygulanan frekans ile damla büyüklüğü kontrol ediliyor vs.

    neyse şurada şöyle bir şey var; (sol taraftaki host printer ın ana kartı, sağ taraftaki sorage device lar, kartuşlar, atık materyal kutusu vs.)

    EPSON WORKFORCE PRO SERİSİ YAZICILAR

    data formatı da verilmiş;

    EPSON WORKFORCE PRO SERİSİ YAZICILAR

    toplam 256 bit (32 byte) bilgi var her bir storage device üzerinde, ilk 3 bit ID bitleri 2^3 = 8 olduğundan 8 farklı storage device adreslenebilir..

    storage device ın içindeki mantık da verilmiş;

    EPSON WORKFORCE PRO SERİSİ YAZICILAR

    EPSON WORKFORCE PRO SERİSİ YAZICILAR

    okuma yazma nın nasıl yapılacağı da anlatılmış;

    EPSON WORKFORCE PRO SERİSİ YAZICILAR

    EPSON WORKFORCE PRO SERİSİ YAZICILAR

    görüldüğü üzere I2C bus üzerinden haberleşiyorlar. temel olarak gerekli 3 sinyal paylaşılıyor.

    diyeceğim o ki, bu haberleşme dinlenip kaydedilebilir ya da kartuşların belli bir andaki bilgileri çok daha sonra tekrar kendi üzerine yazılabilir..

    zaten araştırdığım kadarıyla çinliler ikisini de yapmış;

    örneğin aşağıda fotosu bulunan chip resetter dünyanın parası ama üzerindeki malzemeyi toplasanız 15 USD yi geçmez.. küçük bir mikroconttroller var sadece;

    EPSON WORKFORCE PRO SERİSİ YAZICILAR


    madalyonun diğer yüzü ise chip i emüle etmek, bunu da yapmışlar zaten;

    örneğin; https://tr.aliexpress.com/i/33010639058.html

    EPSON WORKFORCE PRO SERİSİ YAZICILAR



    bana şahsen chip olayı daha kolay ve pratik olurmuş gibi geldi..




  • Bence Recovery dosyasındaki şifreleme çözülürse çünkü çok kısa bir kod bu dosya her yazıcı için ayrı ayrı tekrar oluşturularak istenilen yazıcılar etkinleştirilebilir. Çünkü bu recovery işlemi internet olmadan yapılabiliyor. Ama ilk etkinleştirme internet bağlantısı olmadan yapılamıyor. Adamların serverındaki dosyalarda değişiklik yapmamız imkansız.

    Tabi firmware dosyası hacklenerek tüm yazıcıları etkinleştirebilen tek firmwarede yapılabilir. Ama gerçekten çok kolay değil firmwarede değişiklik yapmaklada bitmiyor bunu yazıcıya gönderdiğinde yazıcının kabul etmesi gerekiyor bu firmwwareyi, burada da imzaları çözmek gerekiyor.

    Bu tarz sistemleri tersine mühendislikle çözmek için linux bilmekte şart bence. Windows için IDA Pro

    Chipless Firmware yüklendikten sonra Yazıcı etkinleştir diyerek yazıcı etkinleştiriliyor.


    Ve recovery dosyası oluşuyor. olurda yazıcınızın firmwaresini orjinal firmware ile değiştirirseniz güncelleme yaparsanız. bu recovery ile kurtarma yapabiliyorsunuz.



    < Bu mesaj bu kişi tarafından değiştirildi ksceyhun -- 14 Haziran 2020; 22:32:48 >




  • Diğer konuda yazmıştım buraya yazmam istenmiş orada mesajım silinmiş. Doldurulabilir tanklar Çin'den getirmesi biraz sıkıntılı veya süre çok uzun oluyor.

    Tanklı sistem yapılacaksa bence bu dolan kartuşlar gereksiz. Ama tank istemiyorum görüntü kirliliği derseniz o ayrı. Mecburen dolan kartuş.


    Ben kendi yazıcımda orjinal mürekkep torbalarına delik açıp tank sistemini montaj ettim. Ne yazık ki yaparken video veya resim çekmedim ama sormak istediğiniz soruları cevaplayabilirim. Bir kişi hangi mürekkep kullanıyorsun demiş bana mı demiş onu da bilmiyorum mesaj silindiği için ben kuşe mürekkep kullanıyorum ama yazıcımı kuşe kağıda baskı için kullandığım için bu mürekkepten kullanıyorum. Kuşe mürekkep pahalı normal çıktılar için gereksiz.

    EPSON WORKFORCE PRO SERİSİ YAZICILAR

    EPSON WORKFORCE PRO SERİSİ YAZICILAR

    EPSON WORKFORCE PRO SERİSİ YAZICILAR



    < Bu mesaj bu kişi tarafından değiştirildi ksceyhun -- 3 Mayıs 2020; 12:20:28 >




  • ksceyhun K kullanıcısına yanıt
    hocam Linux de biliyoruz, IDA Pro da.. x86 ve ARM assembly de.. elektronik te.. şu an yazıcım yok, almadan önce de kafamda soru işareti kalmaması lazım.

    yukardaki mesajlarımda detayı var, benim incelediğim kadarı ile "nwsoc" isminde bir daemon var ve yazıcıyı bu yazılım yönetiyor. orjinal firmware i de inceledim, chipless firmware i de. her ikisinde de nwsoc yazılımı benzer. hatta anladığım kadarı ile bir çok epson yazıcıda da aynı "nwsoc" yazılımı var.

    chipless key atma ile ilgili bir kod göremedim nwsoc içerisinde. merak ettiğim chipless firmware atınca key girmezseniz ne oluyor? chipless yazılımını kim çıkarıyor, ellerinde epson un kodları mı var?

    3. parti bir yazılım daha mı yüklüyorlar kendilerine ait. böyle bir kod parçası yüklenebilirse kolaylıklar I2C üzerinden tüm çevre birimlerine okuyup yazabilir. kartuş üzerindeki veriyi isteyip bazı kısımlarını değiştirip veriyi tekrar kartuşa yazabilir. kodların içinden gördüğüm kadarıyla yazıcı da ftp server da çalışıyor. belki ftp üzerinden bazı operasyonlar yapılabilir.


    ben yazıcı içerisindeki nwsoc yazılımının çevre birimler ile, kartuşlar, atık kutusu vs. haberleşmesini de inceledim. elimde bu yazıcıya ait eski kartuş chip i olsa haberleşmeyi de detaylı olarak inceleme şansım olacak ancak şu an elimde öyle bir eski kartuş vs. yok.

    belki birilerinin bir gün işine yarar diye buraya tespitlerimi bırakayım;

    yazılım kartuşlar ve atık kutusu ile I2C üzerinden haberleşiyor, yazılımın içerisinde temelde 3 adet I2C haberleşmesi metodu var, birinci metod da "muhtemelen" i2c device konfigürasyonu yapmak için 0x02 adresi ile haberleşme var. zaten 1 yerden çağırılıyor. 2. ve 3. metodlar ise 0x55 adresi ile haberleşiyor.

    birazını reverse ettim, assembly kodundan anlaşılırlığı zorlaştırmak için yazmaları falan parçalara bölerek yapmışlar, byte yazmaların bir kısmını string den byte a çevirerek yapmışlar vs. ama biraz düzelttim.

    benim şimdiye kadar çözdüğüm kısımlar şöyle;

    i2c_proc_1:

    signed int i2c_proc_1()
    {
    unsigned __int8 deviceId = 0; // r5
    unsigned __int8 I2C_DEV_ADDR = 0x02; // r6
    int handle; // r0 MAPDST
    signed int result; // r0
    char zeroByte = 0; // r0 MAPDST
    char nameBuf[64];
    char buf1[17];
    char buf0[16];

    sprintf(nameBuf, "/dev/i2c-%d", deviceId);
    handle = open(nameBuf, 2);
    if ( handle < 0 )
    return -1;
    if ( ioctl(handle, I2C_SLAVE, I2C_DEV_ADDR) < 0 )
    {
    close(handle);
    result = -1;
    }
    else
    {
    memset(buf0, 0, 16u);
    write(handle, &zeroByte, 1u);
    read(handle, buf0, 16u);
    memset(buf1, 0, 17u);
    buf1[1] = buf0[0];
    buf1[2] = buf0[1];
    buf1[3] = buf0[2];
    buf1[4] = buf0[3];
    buf1[5] = buf0[4];
    buf1[6] = buf0[5];
    buf1[7] = buf0[6];
    buf1[8] = buf0[7];
    buf1[9] = buf0[8];
    buf1[10] = buf0[9];
    buf1[11] = buf0[10];
    buf1[12] = buf0[11];
    buf1[13] = buf0[12];
    buf1[14] = buf0[13];
    buf1[15] = buf0[14];
    buf1[16] = buf0[15];

    buf1[0] = 0x00;
    buf1[1] = 0xAA;
    write(handle, buf1, 17u);
    close(handle);
    result = 0;
    }
    return result;
    }


    i2c_proc_2:

    signed int __fastcall i2c_proc_2(int a1, signed int opCode, char *pByteOut)
    {
    unsigned __int8 deviceId = 0; // r7
    unsigned __int8 I2C_DEV_ADDR = 0x55; // r8
    int handle; // r0 MAPDST
    const char *var1; // r0
    const char *var2; // r0
    char nameBuf[64];
    char buf[2];
    char tmpByte;

    if ( !pByteOut )
    return (signed int)pByteOut;

    sprintf(nameBuf, "/dev/i2c-%d", deviceId);
    handle = open(nameBuf, 2);
    if ( handle < 0 )
    return -1;

    if ( ioctl(handle, I2C_SLAVE, I2C_DEV_ADDR) >= 0 )
    {
    if ( opCode == 1024 )
    {
    var1 = "0x12";
    tmpByte = strtol(var1, 0, 0);
    if ( write(handle, &tmpByte, 1u) == 1 ) read(handle, pByteOut, 16u);
    close(handle);
    return 0;
    }

    if ( opCode <= 1024 )
    {
    if ( opCode == 16 )
    {
    tmpByte = 0x0c;
    if ( write(handle, &tmpByte, 1u) == 1 ) read(handle, pByteOut, 16u);
    close(handle);
    return 0;
    }

    if ( opCode > 16 )
    {
    if ( opCode == 128 )
    {
    var1 = "0x0f";
    }
    else if ( opCode > 128 )
    {
    if ( opCode == 256 )
    {
    var1 = "0x10";
    }
    else
    {
    if ( opCode != 512 ) { close(handle); return 0; }
    var1 = "0x11";
    }
    }
    else if ( opCode == 32 )
    {
    var1 = "0x0d";
    }
    else
    {
    if ( opCode != 64 ) { close(handle); return 0; }
    var1 = "0x0e";
    }
    tmpByte = strtol(var1, 0, 0);
    if ( write(handle, &tmpByte, 1u) == 1 ) read(handle, pByteOut, 16u);
    close(handle);
    return 0;
    }

    if ( opCode != 2 )
    {
    if ( opCode > 2 )
    {
    if ( opCode == 4 )
    {
    tmpByte = 0x03;
    if ( write(handle, &tmpByte, 1u) == 1 ) read(handle, pByteOut + 0, 16u); ++tmpByte;
    if ( write(handle, &tmpByte, 1u) == 1 ) read(handle, pByteOut + 16, 16u); ++tmpByte;
    if ( write(handle, &tmpByte, 1u) == 1 ) read(handle, pByteOut + 32, 16u); ++tmpByte;
    if ( write(handle, &tmpByte, 1u) == 1 ) read(handle, pByteOut + 48, 16u); ++tmpByte;
    if ( write(handle, &tmpByte, 1u) == 1 ) read(handle, pByteOut + 64, 16u); ++tmpByte;
    if ( write(handle, &tmpByte, 1u) == 1 ) read(handle, pByteOut + 80, 16u);
    }
    else if ( opCode == 8 )
    {
    tmpByte = 0x09;
    if ( write(handle, &tmpByte, 1u) == 1 ) read(handle, pByteOut + 0, 16u); ++tmpByte;
    if ( write(handle, &tmpByte, 1u) == 1 ) read(handle, pByteOut + 16, 16u); ++tmpByte;
    if ( write(handle, &tmpByte, 1u) == 1 ) read(handle, pByteOut + 32, 16u);
    }
    close(handle);
    return 0;
    }
    if ( opCode != 1 )
    {
    close(handle);
    return 0;
    }
    var1 = "0x00";
    tmpByte = strtol(var1, 0, 0);
    if ( write(handle, &tmpByte, 1u) == 1 ) read(handle, pByteOut, 16u);
    close(handle);
    return 0;
    }
    var2 = "0x01";
    tmpByte = strtol(var2, 0, 0);
    if ( write(handle, &tmpByte, 1u) == 1 ) read(handle, pByteOut + 0, 16u); ++tmpByte;
    if ( write(handle, &tmpByte, 1u) == 1 ) read(handle, pByteOut + 16, 16u);
    close(handle);
    return 0;
    }
    if ( opCode == 0x8000 )
    {
    var2 = "0x17";
    tmpByte = strtol(var2, 0, 0);
    if ( write(handle, &tmpByte, 1u) == 1 ) read(handle, pByteOut + 0, 16u); ++tmpByte;
    if ( write(handle, &tmpByte, 1u) == 1 ) read(handle, pByteOut + 16, 16u);
    close(handle);
    return 0;
    }
    if ( opCode <= 0x8000 )
    {
    if ( opCode == 4096 )
    {
    var1 = "0x14";
    }
    else if ( opCode > 4096 )
    {
    if ( opCode == 0x2000 )
    {
    var1 = "0x15";
    }
    else
    {
    if ( opCode != 0x4000 ) { close(handle); return 0; }
    var1 = "0x16";
    }
    }
    else
    {
    if ( opCode != 2048 ) { close(handle); return 0; }
    var1 = "0x13";
    }
    tmpByte = strtol(var1, 0, 0);
    if ( write(handle, &tmpByte, 1u) == 1 ) read(handle, pByteOut, 16u);
    close(handle);
    return 0;
    }
    if ( opCode == 0x40000 )
    {
    buf[0] = 0xFE;
    buf[1] = 0x06;
    if ( write(handle, buf, 2u) == 2 ) read(handle, pByteOut, 1u);
    close(handle);
    return 0;
    }
    if ( opCode <= 0x40000 )
    {
    if ( opCode == 0x10000 )
    {
    var1 = "0x78";
    }
    else
    {
    if ( opCode != 0x20000 ) { close(handle); return 0; }
    var1 = "0x7A";
    }
    tmpByte = strtol(var1, 0, 0);
    if ( write(handle, &tmpByte, 1u) == 1 ) read(handle, pByteOut, 16u);
    close(handle);
    return 0;
    }
    if ( opCode == 0x80000 )
    {
    buf[0] = 0xFE;
    buf[1] = 0x06;
    if ( write(handle, buf, 2u) == 2 ) read(handle, pByteOut, 1u);
    close(handle);
    return 0;
    }
    if ( opCode != 0x100000 ) { close(handle); return 0; }

    buf[0] = 0xFE;
    buf[1] = 0x03;
    if ( write(handle, buf, 2u) == 2 && read(handle, pByteOut, 1u) >= 0 )
    {
    buf[1] = 0x04;
    if ( write(handle, buf, 2u) == 2 ) read(handle, pByteOut + 1, 1u);
    close(handle);
    return 0;
    }
    }
    close(handle);
    return -1;
    }


    i2c_proc_3:

    signed int __fastcall i2c_proc_3(int a1, int a2)
    {
    unsigned __int8 deviceId = 0; // r6
    unsigned __int8 I2C_DEV_ADDR = 0x55; // r10
    int handle; // r0 MAPDST
    signed int result; // r0
    signed int iVar1; // r6
    signed int iVar2; // r5
    int iVar3; // r0
    char dstBuf1[96];
    char dstBuf2[96];
    char nameBuf[64];
    char buf1[17];
    char buf2[17];
    char bufX[16];
    char buf4[4];

    *(_DWORD *)&buf1[0] = 0;
    *(_DWORD *)&buf1[4] = 0;
    *(_DWORD *)&buf1[8] = 0;
    *(_DWORD *)&buf1[12] = 0;
    buf1[16] = 0;
    sprintf(nameBuf, "/dev/i2c-%d", deviceId);
    handle = open(nameBuf, 2);
    if ( handle < 0 )
    return -1;
    if ( ioctl(handle, I2C_SLAVE, I2C_DEV_ADDR) < 0 )
    {
    close(handle);
    return -1;
    }
    if ( a2 & 0x100000 )
    {
    buf4[0] = 0xFE;
    buf4[1] = 0x03;
    buf4[2] = 0xFF;
    buf4[3] = 0xFF;
    write(handle, buf4, 4u);
    usleep(5000u);
    buf4[0] = 0xFE;
    buf4[1] = 0x04;
    buf4[2] = 0xFF;
    buf4[3] = 0xFF;
    write(handle, buf4, 4u);
    usleep(5000u);
    if ( !(a2 & 0x40000) )
    {
    LABEL_6:
    if ( !(a2 & 1) )
    goto LABEL_7;
    goto LABEL_38;
    }
    }
    else if ( !(a2 & 0x40000) )
    {
    goto LABEL_6;
    }
    buf4[0] = 0xFE;
    buf4[1] = 0x06;
    buf4[2] = 0x40;
    buf4[3] = byte_9A5DF0;
    write(handle, buf4, 4u);
    usleep(5000u);
    if ( !(a2 & 1) )
    {
    LABEL_7:
    iVar1 = a2 & 2;
    if ( !(a2 & 2) )
    goto LABEL_8;
    goto LABEL_39;
    }
    LABEL_38:
    buf2[0] = 0x00;
    dstBuf2[0] = 0xAA;
    memcpy(&dstBuf2[1], &g_i2c_buf48[1], 6u);
    memcpy(&dstBuf2[7], &g_i2c_buf48[7], 3u);
    memcpy(&dstBuf2[10], &g_i2c_buf48[10], 2u);
    memcpy(&dstBuf2[12], &g_i2c_buf48[12], 4u);
    memcpy(&buf2[1], dstBuf2, 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    iVar1 = a2 & 2;
    ++buf2[0];
    if ( !(a2 & 2) )
    {
    LABEL_8:
    if ( !(a2 & 4) )
    goto LABEL_9;
    goto LABEL_40;
    }
    LABEL_39:
    buf2[0] = 0x01;
    memcpy(&dstBuf2[0], &g_i2c_buf48[16], 1u);
    memcpy(&dstBuf2[1], &g_i2c_buf48[17], 1u);
    memcpy(&dstBuf2[2], &g_i2c_buf48[18], 2u);
    memcpy(&dstBuf2[4], &g_i2c_buf48[20], 4u);
    memcpy(&dstBuf2[8], &g_i2c_buf48[24], 24u);
    memcpy(&buf2[1], dstBuf2, 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    memcpy(&buf2[1], &dstBuf2[16], 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    i2c_proc_2(a1, 2, dstBuf1);
    usleep(5000u);
    iVar1 = memcmp(dstBuf1, dstBuf2, 32u) != 0;
    if ( !(a2 & 4) )
    {
    LABEL_9:
    if ( !(a2 & 8) )
    goto LABEL_10;
    goto LABEL_43;
    }
    LABEL_40:
    buf2[0] = 0x03;
    memcpy(&dstBuf2[0], &g_i2c_buf0[0], 6u);
    memcpy(&dstBuf2[6], &g_i2c_buf0[6], 24u);
    memcpy(&dstBuf2[30], &g_i2c_buf0[30], 1u);
    memcpy(&dstBuf2[31], &g_i2c_buf0[31], 1u);
    memcpy(&dstBuf2[32], &g_i2c_buf0[32], 22u);
    memcpy(&dstBuf2[54], &g_i2c_buf0[54], 42u);
    memcpy(&buf2[1], dstBuf2, 16u);
    write(handle, buf2, 0x11u);
    usleep(5000u);
    ++buf2[0];
    memcpy(&buf2[1], &dstBuf2[16], 16u);
    write(handle, buf2, 0x11u);
    usleep(5000u);
    ++buf2[0];
    memcpy(&buf2[1], &dstBuf2[32], 16u);
    write(handle, buf2, 0x11u);
    usleep(5000u);
    ++buf2[0];
    memcpy(&buf2[1], &dstBuf2[48], 16u);
    write(handle, buf2, 0x11u);
    usleep(5000u);
    ++buf2[0];
    memcpy(&buf2[1], &dstBuf2[64], 16u);
    write(handle, buf2, 0x11u);
    usleep(5000u);
    ++buf2[0];
    memcpy(&buf2[1], &dstBuf2[80], 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    i2c_proc_2(a1, 4, dstBuf1);
    usleep(5000u);
    if ( memcmp(dstBuf1, dstBuf2, 96u) )
    iVar1 = 1;
    if ( !(a2 & 8) )
    {
    LABEL_10:
    if ( !(a2 & 0x10) )
    goto LABEL_11;
    goto LABEL_46;
    }
    LABEL_43:
    buf2[0] = 0x09;
    memcpy(&dstBuf2[0], &g_i2c_buf1[0], 1u);
    memcpy(&dstBuf2[1], &g_i2c_buf1[1], 1u);
    memcpy(&dstBuf2[2], &g_i2c_buf1[2], 1u);
    memcpy(&dstBuf2[3], &g_i2c_buf1[3], 15u);
    memcpy(&dstBuf2[18], &g_i2c_buf1[18], 30u);
    memcpy(&buf2[1], dstBuf2, 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    memcpy(&buf2[1], &dstBuf2[16], 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    memcpy(&buf2[1], &dstBuf2[32], 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    i2c_proc_2(a1, 8, dstBuf1);
    usleep(5000u);
    if ( memcmp(dstBuf1, dstBuf2, 48u) )
    iVar1 = 1;
    if ( !(a2 & 0x10) )
    {
    LABEL_11:
    if ( !(a2 & 0x20) )
    goto LABEL_12;
    goto LABEL_49;
    }
    LABEL_46:
    buf2[0] = 0x0c;
    memcpy(&dstBuf2[0], &g_i2c_buf1[48], 1u);
    memcpy(&dstBuf2[1], &g_i2c_buf1[49], 6u);
    memcpy(&dstBuf2[7], &g_i2c_buf1[55], 9u);
    memcpy(&buf2[1], dstBuf2, 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    i2c_proc_2(a1, 16, dstBuf1);
    usleep(5000u);
    if ( memcmp(dstBuf1, dstBuf2, 16u) )
    iVar1 = 1;
    if ( !(a2 & 0x20) )
    {
    LABEL_12:
    if ( !(a2 & 0x40) )
    goto LABEL_13;
    goto LABEL_52;
    }
    LABEL_49:
    buf2[0] = 0x0d;
    memcpy(&dstBuf2[0], &g_i2c_buf1[64], 1u);
    memcpy(&dstBuf2[1], &g_i2c_buf1[65], 1u);
    memcpy(&dstBuf2[2], &g_i2c_buf1[66], 1u);
    memcpy(&dstBuf2[3], &g_i2c_buf1[67], 1u);
    memcpy(&dstBuf2[4], &g_i2c_buf1[68], 12u);
    memcpy(&buf2[1], dstBuf2, 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    i2c_proc_2(a1, 32, dstBuf1);
    usleep(5000u);
    if ( memcmp(dstBuf1, dstBuf2, 16u) )
    iVar1 = 1;
    if ( !(a2 & 0x40) )
    {
    LABEL_13:
    if ( !(a2 & 0x80) )
    goto LABEL_14;
    goto LABEL_55;
    }
    LABEL_52:
    buf2[0] = 0x0e;
    memcpy(&dstBuf2[0], &g_i2c_buf1[80], 4u);
    memcpy(&dstBuf2[4], &g_i2c_buf1[84], 12u);
    memcpy(&buf2[1], dstBuf2, 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    i2c_proc_2(a1, 64, dstBuf1);
    usleep(5000u);
    if ( memcmp(dstBuf1, dstBuf2, 16u) )
    iVar1 = 1;
    if ( !(a2 & 0x80) )
    {
    LABEL_14:
    if ( !(a2 & 0x100) )
    goto LABEL_15;
    goto LABEL_58;
    }
    LABEL_55:
    buf2[0] = 0x0f;
    memcpy(dstBuf2, g_i2c_buf3, 16u);
    memcpy(&buf2[1], dstBuf2, 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    i2c_proc_2(a1, 128, dstBuf1);
    usleep(5000u);
    if ( memcmp(dstBuf1, dstBuf2, 16u) )
    iVar1 = 1;
    if ( !(a2 & 0x100) )
    {
    LABEL_15:
    if ( !(a2 & 0x200) )
    goto LABEL_16;
    goto LABEL_61;
    }
    LABEL_58:
    buf2[0] = 0x10;
    memcpy(dstBuf2, g_i2c_buf4, 16u);
    memcpy(&buf2[1], dstBuf2, 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    i2c_proc_2(a1, 256, dstBuf1);
    usleep(5000u);
    if ( memcmp(dstBuf1, dstBuf2, 16u) )
    iVar1 = 1;
    if ( !(a2 & 0x200) )
    {
    LABEL_16:
    if ( !(a2 & 0x400) )
    goto LABEL_17;
    goto LABEL_64;
    }
    LABEL_61:
    buf2[0] = 0x11;
    memcpy(dstBuf2, g_i2c_buf5, 16u);
    memcpy(&buf2[1], dstBuf2, 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    i2c_proc_2(a1, 512, dstBuf1);
    usleep(5000u);
    if ( memcmp(dstBuf1, dstBuf2, 16u) )
    iVar1 = 1;
    if ( !(a2 & 0x400) )
    {
    LABEL_17:
    if ( !(a2 & 0x800) )
    goto LABEL_18;
    goto LABEL_67;
    }
    LABEL_64:
    buf2[0] = 0x12;
    memcpy(dstBuf2, g_i2c_buf6, 16u);
    memcpy(&buf2[1], dstBuf2, 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    i2c_proc_2(a1, 1024, dstBuf1);
    usleep(5000u);
    if ( memcmp(dstBuf1, dstBuf2, 16u) )
    iVar1 = 1;
    if ( !(a2 & 0x800) )
    {
    LABEL_18:
    if ( !(a2 & 0x1000) )
    goto LABEL_19;
    goto LABEL_70;
    }
    LABEL_67:
    buf2[0] = 0x13;
    memcpy(dstBuf2, g_i2c_buf7, 16u);
    memcpy(&buf2[1], dstBuf2, 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    i2c_proc_2(a1, 2048, dstBuf1);
    usleep(5000u);
    if ( memcmp(dstBuf1, dstBuf2, 16u) )
    iVar1 = 1;
    if ( !(a2 & 0x1000) )
    {
    LABEL_19:
    if ( !(a2 & 0x2000) )
    goto LABEL_20;
    goto LABEL_73;
    }
    LABEL_70:
    buf2[0] = 0x14;
    memcpy(dstBuf2, g_i2c_buf8, 16u);
    memcpy(&buf2[1], dstBuf2, 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    i2c_proc_2(a1, 4096, dstBuf1);
    usleep(5000u);
    if ( memcmp(dstBuf1, dstBuf2, 16u) )
    iVar1 = 1;
    if ( !(a2 & 0x2000) )
    {
    LABEL_20:
    if ( !(a2 & 0x4000) )
    goto LABEL_21;
    goto LABEL_76;
    }
    LABEL_73:
    buf2[0] = 0x15;
    memcpy(&dstBuf2[0], &g_i2c_buf9[0], 4u);
    memcpy(&dstBuf2[4], &g_i2c_buf9[4], 12u);
    memcpy(&buf2[1], dstBuf2, 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    i2c_proc_2(a1, 0x2000, dstBuf1);
    usleep(5000u);
    if ( memcmp(dstBuf1, dstBuf2, 16u) )
    iVar1 = 1;
    if ( !(a2 & 0x4000) )
    {
    LABEL_21:
    if ( !(a2 & 0x8000) )
    goto LABEL_22;
    goto LABEL_79;
    }
    LABEL_76:
    buf2[0] = 0x16;
    memcpy(dstBuf2, g_i2c_buf10, 16u);
    memcpy(&buf2[1], dstBuf2, 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    i2c_proc_2(a1, 0x4000, dstBuf1);
    usleep(5000u);
    if ( memcmp(dstBuf1, dstBuf2, 16u) )
    iVar1 = 1;
    if ( !(a2 & 0x8000) )
    {
    LABEL_22:
    if ( !(a2 & 0x10000) )
    goto LABEL_23;
    goto LABEL_82;
    }
    LABEL_79:
    buf2[0] = 0x17;
    memcpy(&dstBuf2[0], &g_i2c_buf_32[0], 3u);
    memcpy(&dstBuf2[3], &g_i2c_buf_32[3], 26u);
    memcpy(&dstBuf2[29], &g_i2c_buf_32[29], 1u);
    memcpy(&dstBuf2[30], &g_i2c_buf_32[30], 2u);
    memcpy(&buf2[1], dstBuf2, 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    memcpy(&buf2[1], &dstBuf2[16], 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    i2c_proc_2(a1, 0x8000, dstBuf1);
    usleep(5000u);
    if ( memcmp(dstBuf1, dstBuf2, 32u) )
    iVar1 = 1;
    if ( !(a2 & 0x10000) )
    {
    LABEL_23:
    if ( !(a2 & 0x20000) )
    goto LABEL_24;
    goto LABEL_83;
    }
    LABEL_82:
    buf2[0] = 0x78;
    memcpy(&dstBuf2[0], &g_i2c_buf11[0], 3u);
    memcpy(&dstBuf2[3], &g_i2c_buf11[3], 13u);
    memcpy(&buf2[1], dstBuf2, 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    if ( !(a2 & 0x20000) )
    {
    LABEL_24:
    if ( !(a2 & 0x80000) )
    goto LABEL_25;
    goto LABEL_84;
    }
    LABEL_83:
    buf2[0] = 0x7A;
    memcpy(&dstBuf2[0], &g_i2c_buf12[0], 8u);
    memcpy(&dstBuf2[8], &g_i2c_buf12[8], 8u);
    memcpy(&buf2[1], dstBuf2, 16u);
    write(handle, buf2, 17u);
    usleep(5000u);
    ++buf2[0];
    if ( !(a2 & 0x80000) )
    {
    LABEL_25:
    if ( !(a2 & 0x400000) )
    goto LABEL_26;
    LABEL_30:
    iVar2 = 24;
    buf1[0] = 0x01;
    do
    {
    write(handle, buf1, 17u);
    usleep(5000u);
    if ( write(handle, buf1, 1u) == 1 )read(handle, bufX, 16u);
    usleep(5000u);
    iVar3 = memcmp(&buf1[1], bufX, 16u);
    ++buf1[0];
    if ( iVar3 )
    iVar1 = 1;
    --iVar2;
    }
    while ( iVar2 );
    goto LABEL_26;
    }
    LABEL_84:
    buf4[0] = 0xFE;
    buf4[1] = 0x06;
    buf4[2] = 0x01;
    buf4[3] = g_i2c_byte_01;
    write(handle, buf4, 4u);
    usleep(5000u);
    if ( a2 & 0x400000 )
    goto LABEL_30;
    LABEL_26:
    close(handle);
    if ( iVar1 == 1 )
    result = -1;
    else
    result = 0;
    return result;
    }




  • Şu Atık tankı çözebilsek çok iyi olur aslında. Bu WicReset firması epsonun bu atık tankın kutulu olan modellerinin hiçbirine key satmıyor. Bence bu atık kutusundaki çipte aynı yöntemle sıfırlanabilir ama bilerek yapmıyor olabilirler çünkü çinliler resetleyici satıyor.


    Bu Chipless için 2 farklı program var biri çinlilerin biri korelilerin çıkardığı. Çinlilerinkini daha inceleyemedim bi ara onada bakacağım o daha fazla yazıcı destekliyor.
  • ksceyhun K kullanıcısına yanıt
    Ben yazın yabancı bir satış sitesinde yazıcının chipless + atık kutusu reset özellikli yazılımla satıldığını gördüm. Hatta site üzerinden nasıl yapıldığını sorduğum bir mesaj da yazmıştım doğal olarak cevap yazmadılar. Kore sitesiydi sanırım.
  • Bence çinliler çıkartmaz çünkü resetleyicide satıyorlar. Ama koreliler bunun üzerinde çalışıyor olabilir. çünkü onlar resetleyici satmıyorlar. eğer yazılımları atık tankıda resetlerse herkes oradan alır.

    bu atık tank resetleme işi için bir ağ kurmak lazım bir liste yapın isterseniz. Çünkü aldığımız her resetleyici ülkeden döviz çıkışı.

    Geçici çözüm olarak bir liste oluşturalım ; Bende resetleyici var İzmit'te oturuyorum. bana yakın olanların atık kutularını getirirseler ücretsiz resetleyebilirim.

    Bu arada atık kutusu tam bitmemiş olmalı resetleyicide öyle yazıyor. sıfıra kadar düşerse seviye resetleme yapıyor mu deneyen var mı? en az %15 olmalı diyor. Ben tahmini %5-%10 civarı resetleme yaptım resetledi.
  • ksceyhun K kullanıcısına yanıt
    Bu konuyla ilgili bir Whatsapp grubumuz var, ilk zamanlardaki kadar hareketli olmasa da ara sıra paylaşımlar oluyor. Katılmak isteyenler bana özelden telefon no yazarsa gruba ekleyebilirim. Grupta pek çok kişide resetleyici var.

    Resetleyicinin açıklamasında % 15' in altına düşürmeyin yazıyor ama yanlış hatırlamıyorsam bir arkadaş sıfırken resetledi. Yine de işi riske atmamak lazım.



    < Bu mesaj bu kişi tarafından değiştirildi murat3807 -- 4 Mayıs 2020; 17:56:31 >
  • yazıcı yı japonlar üretiyor ama sanırım bu işten çinliler ve koreliler de çok para kazanıyor. bence çinlilerin ve korelilerin fiyatları da fahiş.. kamu yararına birşeyler yapıp yayınlamak en güzeli.

    patent de de var, kod da da var, I2C üzerinden haberleşildiği belli. bir logic analyzer ile biraz veri kaydedilse kalıcı olarak çözülür aslında. örneğin kartuşlar çıkarılır, yazıcı açılır, kartuş sorgulama komutları ve atık kutusu ile haberleşme kaydedilir. bu şekilde kombinasyonlar yapılarak her bir kartuş ile haberleşme kaydedilebilir.

    çok çözümlemeye uğraşmadan alınan bu veriler kartuş azaldığında tekrar üzerine de yazılabilir ya da kartuş ile haberleşme yerine biz o heberlerşmeyi küçük bir devre ile emüle edebiliriz.

    örneğin, aşağıda linkini gördüğünüz arkadaşımız parasızlıktan magenta kartuş alamamış ve hiç olmazsa diğer kartuşlar ile yazıcıyı çalıştırmaya devam edebilmek için PIC18 microcontroller kullanarak kartuşları emüle etmiş. çalışması şu linkten görülebilir;
    https://www.instructables.com/id/Reverse-Engineering-to-Emulate-Ink-Cartridges-for-/

    onun durumunda kartuş verileri şu şekildeymiş;
    quote:


    unsigned char black[32] = {0x10,0x00,0x02,0xF2,0x00,0x00,0x00,0x00,0x00,0x50,0x90,0x6A,0x17,0xE3,0x54,0xA3,0x39,0x50,0x14,0x15,0x31,0x93,0xE4,0xB4,0x24,0x96,0x57,0x04,0x35,0xF5,0xE4,0x14};
    unsigned char cyan[32] = {0x4C,0x04,0x01,0xF2,0x00,0x00,0x00,0x00,0x00,0x50,0x90,0x5A,0x19,0xF0,0x94,0x03,0x3B,0x50,0x16,0x17,0x31,0x93,0xE4,0xB4,0x24,0x96,0x57,0x04,0x35,0xF5,0xE4,0x34};
    unsigned char magenta[32] = {0x4D,0x04,0x01,0xF2,0x00,0x00,0x00,0x00,0x00,0x50,0x90,0x5A,0x77,0xF4,0x74,0x23,0x3B,0x50,0x18,0x19,0x31,0x93,0xE4,0xB4,0x24,0x96,0x57,0x04,0x35,0xF5,0xE4,0x54};
    unsigned char yellow[32] = {0x4A,0x04,0x01,0xF2,0x00,0x00,0x00,0x00,0x00,0x50,0x90,0x6A,0x8B,0xC9,0xA4,0x41,0x3B,0x50,0x1A,0x1B,0x31,0x93,0xE4,0xB4,0x24,0x96,0x57,0x04,0x35,0xF5,0xE4,0x74};


    yukarda daha önceki mesajlarımdan birinde patent den alıntı yapmıştım, orada gözüküyordu 3 bit adres kullandığı. burada da arkadaşımız o 3 bitin neler olduğunu kendi yazıcısında çözmüş. onun durumu için adresler şu şekildeymiş; siyah = 1, cyan = 3, magenta = 5, yellow = 7... eleman magenta için de cyan verilerini cevap olarak göndermiş ve olayı çözmüş..


    if (addr[i]&0x7 == 0x01) {
    inkPtr = &black[0];
    } else
    if (addr[i]&0x7 == 0x03) {
    inkPtr = &cyan[0];
    } else
    if (addr[i]&0x7 == 0x05) {
    inkPtr = &cyan[0];//&magenta[0];
    }
    else if(addr[i]&0x7 == 0x07) {
    inkPtr = &yellow[0];
    }



    şu linkte de aşağıda bir adet kartuş resetter bilgisi var; https://www.experimental-engineering.co.uk/tag/cartridge/

    fotografı şu;

    EPSON WORKFORCE PRO SERİSİ YAZICILAR


    burada da MSP430 mikrocontroller kullanmışlar. kullandıkları MSP430F2131 mikrocontroller ın arrow fiyatı 1.5 USD civarı (https://www.arrow.com/en/products/msp430f2131idw/texas-instruments )

    PCB üzerindeki tüm devre elemanlarını düşündüğümüzde maliyeti 5 dolar ı geçmez ama aliexpress den chip resetter bakınca çok fahiş fiyatlar çıkıyor..




  • Yazıcı Türkiye'de yeni yeni farkedilmeye başlandı. Yapacağınız bir çalışma emin olun çok değerli olacak. Çünkü bu seri piyasaya uzun yıllar damgasını vuracak.

    Chipless yazılımının Türkiye'de satış hakkını elinde bulunduran firma bile öncelikle muadil kartuştan vurgun yapma yoluna gitti. Ben bu işlerin, yazıcı piyasasının dışında olan ve yazılımdan anlamayan biri olarak pek çok firmanın 3 maymunu oynadığı dönemde bu konuyu açtım. Hatta konuyu açmadan önce çok düşündüm, Epson markasına haksızlık da yapmak istemedim. Bir süre bekledim ve gördüm ki dünyada yazıcı ve chipless yazılım çok rahalıkla satılırken benim ülkemde neden böyle insanlar sömürülüyor dedim. Bazıları çok çok yüksek fiyata orijinal kartuş satacak diye ya da hiç de az olmayan bir fiyatla muadil kartuş satacak diye bekleyelim mi yani?..



    < Bu mesaj bu kişi tarafından değiştirildi murat3807 -- 4 Mayıs 2020; 22:10:10 >
  • Epson WF-C5790DWF yazıcı aldım. Fiyat 1789 TL. 55 TL kupun ve 100 TL Maxipuan ile maliyeti 1634 TL oldu. Stokta 3 ürün kaldı.

    https://www.n11.com/urun/epson-workforce-pro-wf-c5790dwf-wifi-murekkep-puskurtmeli-cok-fonksiyonlu-yazici-998256?magaza=misbah
  • Boş vaktimde Atık tank resetleme işini çözebilmek için biraz çinlilerin yaptıkları firmwareleri inceledim.


    orjinal firmware ile chipless firmware versiyonu aynı olan iki bellenimi inceledim. linux dosyalarının bulunduğu yerde değişiklik yok. değişiklikler CROM1 ve CROM2 kısmında incelediğim yazıcı modeli için CROM3 iki firmwarede de aynıydı.

    Bu CROM dosyalarını anlaşılabilir bir dile çevirebilen varsa bu chipleri nasıl devre dışı yaptıklarını görürüz ve aynı işlemi atık tank içinde yapabiliriz.

    CRom dosyaları zipli dosya içerisindedir. >> BURADA >> https://www.onlinereset.com/resim/China%20WF-3720.zip

    Burada Epson yazıcı incelemesi var bakmak isteyenler için link >> https://os-s.net/publications/thesis/Bachelor_Thesis_Weweler.pdf



    < Bu mesaj bu kişi tarafından değiştirildi ksceyhun -- 26 Mayıs 2020; 19:37:0 >




  • BU yazıcılarla ilgili paylaşımları yaptığımız Whatsapp grubundaki arkadaşların gayretleriyle yazılım ve pigment mürekkep temini konusunda firmalardan uygun fiyatlar alındı. Epson WF-C5790DWF modelini almayı düşünen arkadaşlara duyurulur.
  • quote:

    Orijinalden alıntı: murat3807

    BU yazıcılarla ilgili paylaşımları yaptığımız Whatsapp grubundaki arkadaşların gayretleriyle yazılım ve pigment mürekkep temini konusunda firmalardan uygun fiyatlar alındı. Epson WF-C5790DWF modelini almayı düşünen arkadaşlara duyurulur.
    Hocam uygun fiyatlar nedir acaba

    < Bu ileti DH mobil uygulamasından atıldı >
  • an agony A kullanıcısına yanıt
    Yazılım işini çözmüş bir arkadaşla 200 liraya anlaştık. Mürekkep olarak pigment mürekkep kullananarkadaşlar inktec mürekkep satan bir satıcıdan 90 lira litre fiyatı aldılar, ben photoink claria mürekkep kullanıyorum. Kartuşları ve bakım kutusu resetleyiciyi aliexpressten almak gerekiyor. Türkiye'de komple sistemi satanlar var ama çok para istiyorlar.



    < Bu mesaj bu kişi tarafından değiştirildi murat3807 -- 5 Temmuz 2020; 14:36:30 >
  • 
Sayfa: önceki 678910
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.