bp 00401237 "r zf=1; g" bp 0040129B "r zf=1; g" bp 0040159C FILE STRUCTURE: [000..00F] ">Keygenme6 Key<" [ 010] 0xFF [011..10F] f (0xFF bytes) [110..18F] g (0x80 bytes, 1024 bits) N = 021C02B83B55B322BDB134C133894A39DED270A01785F1FE760F0BAEF71783CB5AE67B2208E363B8E60A2B6C0153BA5B8E2B05CBBBBF54F9A7D741D3F337E8052E77379902487E7A9FEFEC17C86AF4917172F92E39434A0258D9E850A454784E8622E579C3B8CF44F47864A745CF086396B4E92A7B0FF8F068FB3A81A3E0725FCEFEB2DA03EF32F1E3B5C4280A2252AF5FB3C8900A5F2DE9EBF669237BBC9080614F1509C979FCAF00CA409A15A239A9748A5C61C96F141E403D02B40961CDA8E62E5EF536F165A1B99AFEA582C3169DBF32B91B903A75DFA315DB95B3F181D4A5992F7ED1572446B091E9EBCACDDD57B6216DA3876671EEFDACB86DFB503F e = 10001 jizz = f ^ e (mod N) = 0159773E 27A54B7D C4D7C26266E212 BD20B6B97CD51AB58BFD70916AAC631A3FE24698B79C92E01D72618DA654835E19333A88974BAB8FDFC4D08E39638776288E35338EB7862DDD9526B94EB6FA901C394CBD0B88D9DB72BE6CDFE08DE81A7813F8A4D0AD0BF3FAA4E428C8C273CE22633350902E3C1A7F4BF52C128A99712630D966D1EE967286C98918FF619547A068B90A8489C200BB0F83851C328C1E9EE125D08A1C5907B11C13CF4D65055E26EA5A15323371840ECB12B8C5B6C49BDF57FF59FBD9CD5E596330B3022522364B57CD306CBC1956840BAAA8C2AF0E7710576C64653EAF38045FE0BFB013E7F90384DD169F453A210D7BFA02C3B8BFFA jizz must be <= 96 bytes (768 bits) jizz is split into some parts: jizz bytes[0..3] (must always equal 0xAA80AA80) A = jizz bytes[4..7] = 27A54B7D B = jizz bytes[8..14] = C4D7C26266E212 C = jizz bytes[15..95] = BD20B6B97CD51AB58BFD70916AAC631A3FE24698B79C92E01D72618DA654835E19333A88974BAB8FDFC4D08E39638776288E35338EB7862DDD9526B94EB6FA901C394CBD0B88D9DB72BE6CDFE08DE81A7813F8A4D0AD0BF3FAA4E428C8C273CE22633350902E3C1A7F4BF52C128A99712630D966D1EE967286C98918FF619547A068B90A8489C200BB0F83851C328C1E9EE125D08A1C5907B11C13CF4D65055E26EA5A15323371840ECB12B8C5B6C49BDF57FF59FBD9CD5E596330B3022522364B57CD306CBC1956840BAAA8C2AF0E7710576C64653EAF38045FE0BFB013E7F90384DD169F453A210D7BFA02C3B8BFFA r = 016B2835C93F302F1A281E0FC6C3C270674C5A7E23D3EB08F44E44AF963F1931F2A2EDC636065FAD79763B57F62C4561310AD6ECD703F480517F8609AFA57806CD7743899D7930B00D129A0C048BA4361AF30C93A0653528EBA39DF287477E2BCF12A4FED60558AF4C1397F73D456E46805A96D5FDD389DE12E2E302CC6F3215E26126388191144E014F9539FA78A668CDD44501A6AE84425D9437DEDC773FFA62DEE277CAA2BF448BE97F6961F67F6A63D8B3A764CA00C7A61B036FFA4E4527778D8DBF25FEC02F7C8B36AE1A723B32108A6E3D6CE16890CA1833A21267AA238E52419BB434B839D96424BE8EF9C181E1A405A91B3B86500D7B484B8C1081 s = 017A1EB581E9B0719167D77ABC3542A690B4B7F8A9C6BC5535B658F6AC0577432EB3084B0F07D1D8FD8E98A06BCA6DF9DAA8796D5A40FB09D942ED6E3473A7D9838A8771BB4BA1C4248EC07E36C82963DE3575C5FD95BFBD7F4795DBC4585E3286BA22AD8529F2E59A39B14970D0534B1F576101FEE9BCBCFEB22BC922DF5E7F5150C18FA87E02AF7415838BADD7B992EA58B3D888D520A0E935B5A7379BC19E5749C9E21306E970BA90C66F9D7B76AF322086D154F2E7A612C0A508D74E46DC2BC9429B7D53ABCF839A191474EC0E9141CCDEC4E4A3E2A7E4A961DA8D77C1005969F2257F9A5781BC618A8081B81E36A05C0244A200FD3FD9B96E500DB7F4 s^B * r^A = 0193539A120428230A7DC3A77ECF89DBE00F6A0BC8EB912ECC927493F191272B7768E7F9F2C530EEE0F4C99225D5D32E14BDABA3DBA20BD66AAED483895B9CEAE143F639D26AC1743934EE6AF868207AEE0C841FAFBB7E7A829815643EC50AAD887DFD9B018403BE89371DC0405090522E0BD8A2D02F1F7C2725AED7829F881BE2A310977A0FCA2604752450AD464AC8294988F81EDA3C20670D32CF79208073F0C771C2D3966ABD419B1CFE6B368AE4581B70B2A994EFED50E08C2C3F3A18CB3A2A4F4DDEFF4808A0843D816D4B782C551C31C7B7A27D88FFF1B3DDD84479802D514CDBBAE71BE8170DE2A17E56C67E91685E2BE37351DB828E73B8938ACD input to sha1: strlen() bytes of C bytes of s^B * r^A sha1(): 1F0175B06C795F0FE85FAF8DE5EC8CCD4477B099 require: sha1 (mod FABF1234) == A require: lsb(g) == 0x0C or msb(g) == 0x55 g | N and first