+ Reply to Thread
Results 1 to 16 of 16

Thread: Прошу помощи в решении формулы проверки пароля

  1. #1

    Default Прошу помощи в решении формулы проверки пароля

    Добрый день! Ситуация такова имеется ЧПУ станок система ITNC530 последнее время выползло окно с требованием ввести пароль так как прошло 2000 часов его работы, и надо провести его сервисное обслуживание производителем . В связи с санкциями немцы, а они производители станка больно то не хотят с нами общаться. Вообщем решил я попробовать сам добыть пароль сделал бекап системы нашел как я думаю те файлы которые как раз отвечают за проверку пароля . Пароль генерируется по ID ключа он есть. Ну вот дальше привожу код Python 2.7.

    PHP Code:
    def setInspektionKey(selfIDPW):
            
    result False
            ID 
    int(ID)
            
    myID ID
            listAttr 
    = []
            
    dictAttr = {}

            
    dictAttr['Name'] = "id"
            
    dictAttr['Value'] = str(ID)
            
    listAttr.append(dictAttr)

            
    dictAttr = {}

            
    dictAttr['Name'] = SMARTPW
            dictAttr
    ['Value'] = str(PW)
            
    listAttr.append(dictAttr)

            
    #pwInternal = (ID ^(((ID%7)+1)*0x06000000-1))+100000000
            #if(pwInternal == int(PW) and (pwInternal > 100000000 or pwInternal < 999999999)):
            
    self.calculateiKey()
            if( 
    int(PW) == int(self.m_iKeyPw) ):
                
    result True
                
    'ID und PW in Konfigdatei schreiben'
                
    node self.dmgXMLPasre.getNode(IKEYS)
                
    'sichern stelle, ob SmartID in Konfig vorhanden ist'
                
    foundID False

                size 
    len(self.m_SmartKeyList)
                for 
    i in range(size):
                    
    SmartKeyData self.m_SmartKeyList[i]
                    if(
    SmartKeyData.m_ID != None and (int(SmartKeyData.m_ID) == int (myID))):
                        
    foundID True
                        
    break
                if(
    foundID):
                    
    nodeLastnodeNext self.dmgXMLPasre.getLastAndNextNode(SMARTKEYNonestr(myID))
                    
    self.dmgXMLPasre.repleaseAttribut(nodenodeLast,SMARTKEYlistAttr)
                else:
                    
    self.dmgXMLPasre.addAttribut(nodeSMARTKEY,listAttr)
                
    self.readSmartKeyConfig()
            return 
    result

        def getIDAndPW
    (self):
            
    SmartID None
            SmartPw 
    None
            result
    pw self.isInspektionKeyValid()
            if(
    result and pw!=None and self.smartKeyID 0):
                
    SmartID self.smartKeyID
                SmartPw 
    pw
            elif
    (result and pw==13 and self.smartKeyID 0):
                
    'ServiceKey'
                
    SmartID self.smartKeyID
                SmartPw 
    pw
            elif
    (self.smartKeyID and ((self.smartKeyID 10000000) or (self.smartKeyID 139999999))):
                
    SmartID self.smartKeyID
            
    else:
                
    size len(self.m_SmartKeyList) - 1
                
    if(size >= 0):
                    
    SmartKeyData self.m_SmartKeyList[size]
                    
    SmartID SmartKeyData.m_ID
            
    return(SmartIDSmartPw)

        
    def isInspektionKeyValid(self):
            
    result False
            pw 
    None
            
    'aus Kofig.Datei die eingetragene Password und die zugehГ¶rige ID ermitteln'
            
    size len(self.m_SmartKeyList)
            for 
    i in range(size):
                
    SmartKeyData self.m_SmartKeyList[i]
                if(
    int(SmartKeyData.m_ID) == self.smartKeyID):
                    
    self.calculateiKey()
                    
    pw SmartKeyData.m_PW
                    
    if( int(pw) == int (self.m_iKeyPw) ):
                        
    result True
                    
    break

            if(
    not result):
                
    skey str(self.smartKeyID)
                
    index1 int(string.find(skey"1"0))
                
    index2 int(string.find(skey"3"0))

                if(
    SUMULATE_ITNC == and Simulate == 0):
                    
    value = (self.smartKeyID ^(((self.smartKeyID%7)+1)*0x06000000-1))+100000000
                    
    if((value 100000000 or value 999999999)):

                        if(
    index1 == and index2 == 1):
                            
    result True
                            pw 
    13
                        
    else:
                            
    pw value
                
    else:
                    if(
    index1 == and index2 == 1):
                        
    result True
                        pw 
    13

            
    return (resultpw)

        
    def calculateiKey(self):
            if(
    self.m_BTIndex and self.smartKeyID 0):
                
    value1 = (self.smartKeyID ^(((self.smartKeyID%7)+1)*0x06000000-1))+100000000
                value2 
    = (65535 ^( self.m_BTIndex*(((self.m_BTIndex%7)+1) + 1000))) * 10000000
                self
    .m_iKeyPw value1 value2
            
    else:
                
    self.m_iKeyPw 0


        def CallBackSmartKeyID
    (selfdict):
          if 
    dict != None:
              
    strText dict[DG_PIT_Unicat_Nummer]
              if(
    len(strText) > and int(strText) > 0):
                  
    self.m_SmartKeyActive True
                  self
    .smartKeyID int(strText)
                  
    self.m_MachineCheckView.updateStateOkButton()

        
    def CallBackKeySwitchID(selfdict):
          if 
    dict != None:
              
    strText dict["BG_AKTIVE_BA"]
              if(
    len(strText) > 0):
                  if(
    int(strText) == and not self.m_SmartKeyActive):
                      
    self.smartKeyID 130000161
                      self
    .m_MachineCheckView.updateStateOkButton()
                  
    elif(int(strText) != and not self.m_SmartKeyActive):
                      
    self.smartKeyID 0
                      self
    .m_MachineCheckView.updateStateOkButton() 
    Вот вставил участок кода который как я думаю отвечает за проверку пароля, теперь собственно вопросы которые меня пока ставят в тупик и заставили обратится к Вам

    PHP Code:
    def calculateiKey(self):
            if(
    self.m_BTIndex and self.smartKeyID 0):
                
    value1 = (self.smartKeyID ^(((self.smartKeyID%7)+1)*0x06000000-1))+100000000
                value2 
    = (65535 ^( self.m_BTIndex*(((self.m_BTIndex%7)+1) + 1000))) * 10000000
                self
    .m_iKeyPw value1 value2
            
    else:
                
    self.m_iKeyPw 
    Вот эта функция self.smartKeyID как я понял равна self.smartKeyID = 130000161

    А вот ,что это такое self.m_BTIndex это ID моего ключа?

    И еще я не знаю как решить вот эту формулу

    value1 = (self.smartKeyID ^(((self.smartKeyID%7)+1)*0x06000000-1))+100000000
    value2 = (65535 ^( self.m_BTIndex*(((self.m_BTIndex%7)+1) + 1000))) * 10000000

    Мне непонятен вот этот участок (self.smartKeyID ^(((self.smartKeyID%7)+1)*0x06000000

    Ну вот вкратце объяснил проблему , да часы переводить на системе пробовал словил глюк, станок начал ощутимо притормаживать. Патчить не вариант .Да прикладываю полностью скрипт .
    Attached Files

  2. Пользователь сказал cпасибо:
  3. #2
    Darwin's Avatar

    Default Re: Прошу помощи в решении формулы проверки пароля

    Станок дело святое. А с чего вы решили, что вам нужно менять пароль, а не обнулить uptime в конфиге?

  4. Пользователь сказал cпасибо:
  5. #3

    Default Re: Прошу помощи в решении формулы проверки пароля

    Пароль менять не нужно его нужно вычислить и ввести в чтобы закрылось окно с напоминанием о сеовисном обслуживание. Со временем пока играться не хочу.

  6. Пользователь сказал cпасибо:
  7. #4
    Darwin's Avatar

    Default Re: Прошу помощи в решении формулы проверки пароля

    Скриншот или фото окна можете предоставить?

  8. Пользователь сказал cпасибо:
  9. #5

    Default Re: Прошу помощи в решении формулы проверки пароля

    Last edited by EvgenyAly; 05-04-2015 at 11:37.

  10. Пользователь сказал cпасибо:
  11. #6
    Darwin's Avatar

    Default Re: Прошу помощи в решении формулы проверки пароля

    Взялся посмотреть. Пока смотрю исходник. А пароль 13 пробовали вводить?

    Code: Python
    elif(result and pw==13 and self.smartKeyID > 0):
    'ServiceKey'
    SmartID = self.smartKeyID
    SmartPw = pw
    Last edited by Darwin; 07-04-2015 at 09:31.

  12. Пользователь сказал cпасибо:
  13. #7

    Default Re: Прошу помощи в решении формулы проверки пароля

    Нет не пробовал, попробую сейчас отпишу результат

  14. Пользователь сказал cпасибо:
  15. #8
    Darwin's Avatar

    Default Re: Прошу помощи в решении формулы проверки пароля

    У вас есть возможность изменять код скриптов?

    ID из этой картинки ваш?

    Если да, попробуйте все ниже указанные пароли, один из них должен сработать:
    Code:
    789522613296
    800742613296
    778282613296
    775352613296
    764142613296
    752912613296
    741662613296
    730392613296
    2519742613296
    2485882613296
    2366932613296
    2354662613296
    2342372613296
    941442613296
    930362613296
    919262613296
    811942613296
    952502613296
    915492613296
    904422613296
    893332613296
    882222613296
    871092613296
    859942613296
    848772613296
    845422613296
    834282613296
    823122613296
    719102613296
    707792613296
    705282613296
    694002613296
    682702613296
    671382613296
    2565922613296
    2553842613296
    2555952613296
    2543902613296
    2531832613296
    2507632613296
    2495502613296
    2483352613296
    2473762613296
    2461622613296
    2449462613296
    2437282613296
    2425082613296
    2412862613296
    2415812613296
    2403622613296
    2391412613296
    2379182613296
    2885692613296
    4795812613296
    Пароль 13 будет работать только в режиме симуляции с этим ID 130000161, но можно попробовать может сработает и так (правда я сомневаюсь в этом, но мало ли).
    Last edited by Darwin; 07-04-2015 at 09:58.

  16. Пользователь сказал cпасибо:
  17. #9

    Default Re: Прошу помощи в решении формулы проверки пароля

    Круто а как считали если не секрет файлы есть если скажите какие постораюсь выдернуть.

  18. Пользователь сказал cпасибо:
  19. #10

    Default Re: Прошу помощи в решении формулы проверки пароля

    Да на екзелабе вам все давно рассказали :(



    Давайте предложенное проделаю за вас
    Code:
    BTIndexes = [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 301, 501]
    smartKeyID = 30039887
    
    def calculateiKey(): 
      for i in range(len(BTIndexes)):
        m_BTIndex = BTIndexes[i]
        value1 = (smartKeyID ^(((smartKeyID%7)+1)*0x06000000-1))+100000000 
        value2 = (65535 ^(m_BTIndex*(((m_BTIndex%7)+1) + 1000))) * 10000000 
        m_iKeyPw = value1 + value2 
        print 'BTIndex: %d; iKeyPw: %d'%(m_BTIndex,m_iKeyPw)
    
    calculateiKey()
    И будем вместе наслаждаться результатом
    Code:
    BTIndex: 101; iKeyPw: 952502613296
    BTIndex: 102; iKeyPw: 941442613296
    BTIndex: 103; iKeyPw: 930362613296
    BTIndex: 104; iKeyPw: 919262613296
    BTIndex: 105; iKeyPw: 915492613296
    BTIndex: 106; iKeyPw: 904422613296
    BTIndex: 107; iKeyPw: 893332613296
    BTIndex: 108; iKeyPw: 882222613296
    BTIndex: 109; iKeyPw: 871092613296
    BTIndex: 110; iKeyPw: 859942613296
    BTIndex: 111; iKeyPw: 848772613296
    BTIndex: 112; iKeyPw: 845422613296
    BTIndex: 113; iKeyPw: 834282613296
    BTIndex: 114; iKeyPw: 823122613296
    BTIndex: 115; iKeyPw: 811942613296
    BTIndex: 116; iKeyPw: 800742613296
    BTIndex: 117; iKeyPw: 789522613296
    BTIndex: 118; iKeyPw: 778282613296
    BTIndex: 119; iKeyPw: 775352613296
    BTIndex: 120; iKeyPw: 764142613296
    BTIndex: 121; iKeyPw: 752912613296
    BTIndex: 122; iKeyPw: 741662613296
    BTIndex: 123; iKeyPw: 730392613296
    BTIndex: 124; iKeyPw: 719102613296
    BTIndex: 125; iKeyPw: 707792613296
    BTIndex: 126; iKeyPw: 705282613296
    BTIndex: 127; iKeyPw: 694002613296
    BTIndex: 128; iKeyPw: 682702613296
    BTIndex: 129; iKeyPw: 671382613296
    BTIndex: 201; iKeyPw: 2565922613296
    BTIndex: 202; iKeyPw: 2553842613296
    BTIndex: 203; iKeyPw: 2555952613296
    BTIndex: 204; iKeyPw: 2543902613296
    BTIndex: 205; iKeyPw: 2531832613296
    BTIndex: 206; iKeyPw: 2519742613296
    BTIndex: 207; iKeyPw: 2507632613296
    BTIndex: 208; iKeyPw: 2495502613296
    BTIndex: 209; iKeyPw: 2483352613296
    BTIndex: 210; iKeyPw: 2485882613296
    BTIndex: 211; iKeyPw: 2473762613296
    BTIndex: 212; iKeyPw: 2461622613296
    BTIndex: 213; iKeyPw: 2449462613296
    BTIndex: 214; iKeyPw: 2437282613296
    BTIndex: 215; iKeyPw: 2425082613296
    BTIndex: 216; iKeyPw: 2412862613296
    BTIndex: 217; iKeyPw: 2415812613296
    BTIndex: 218; iKeyPw: 2403622613296
    BTIndex: 219; iKeyPw: 2391412613296
    BTIndex: 220; iKeyPw: 2379182613296
    BTIndex: 221; iKeyPw: 2366932613296
    BTIndex: 222; iKeyPw: 2354662613296
    BTIndex: 223; iKeyPw: 2342372613296
    BTIndex: 301; iKeyPw: 2885692613296
    BTIndex: 501; iKeyPw: 4795812613296

  20. 4 пользователя(ей) сказали cпасибо:
    Dark Koder (08-04-2015) Darwin (07-04-2015) dukeBarman (05-05-2015)
  21. #11

    Default Re: Прошу помощи в решении формулы проверки пароля

    Спасибо за помощь и простите за нубство но откуда у BTindex берутся значения от 101 до 501 , при попытке открыть файл basetechnology.xml пустой лист и у этого файла 0 размер.

  22. Пользователь сказал cпасибо:
  23. #12

    Default Re: Прошу помощи в решении формулы проверки пароля

    в вашем архиве файл длиной 9907
    <Report xsi:schemaLocation="basetechnology http://bisv030/ReportServer?%2FIT%2FELTRO%2Fbasetechnology%2Fbase technology&rs%3AFormat=XML&rs%3ASnapshot%3Aisnull= True&rc%3ASchema=True" Name="basetechnology" Date="2012-05-07T02:00:09.3953936+02:00" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="basetechnology">
    <basetechnology>
    <Details_Collection>
    <Details BASIS="101" MTYP="8044"/>
    <Details BASIS="101" MTYP="8045"/>
    <Details BASIS="101" MTYP="8046"/>
    <Details BASIS="102" MTYP="0040"/>
    <Details BASIS="102" MTYP="0041"/>
    <Details BASIS="102" MTYP="0044"/>
    <Details BASIS="102" MTYP="0045"/>
    <Details BASIS="102" MTYP="0046"/>

  24. Пользователь сказал cпасибо:
  25. #13
    Darwin's Avatar

    Default Re: Прошу помощи в решении формулы проверки пароля

    И чтобы повысить скорость ручного перебора, часто встречающиеся индексы ставим в начало.
    Last edited by Darwin; 08-04-2015 at 07:40.

  26. Пользователь сказал cпасибо:
  27. #14
    Darwin's Avatar

    Default Re: Прошу помощи в решении формулы проверки пароля

    Ради интереса, попробуйте ввести это:

    ID: 130039887
    PW: 13

  28. Пользователь сказал cпасибо:
  29. #15

    Default Re: Прошу помощи в решении формулы проверки пароля

    Прошу прощения за долгое отсутствие , вот это пробовал вводил ID: 130039887
    PW: 13 никакого результата. Полученные пароли тоже пробовал вводил тоже без результата , вот вопрос родился из этого места

    Code: Python
    value = (self.smartKeyID ^(((self.smartKeyID%7)+1)*0x06000000-1))+100000000
    if((value > 100000000 or value < 999999999)):


    правильно ли я понимаю вот это выражение

    Code: Python
     if((value > 100000000 or value < 999999999))


    что полученный результат должен быть больше 100000000 и меньше 999999999 если да то как это можно подставить вот в это решение

    Code: Python
    BTIndexes = [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 301, 501]
    smartKeyID = 30039887

    def calculateiKey():
    for i in range(len(BTIndexes)):
    m_BTIndex = BTIndexes[i]
    value1 = (smartKeyID ^(((smartKeyID%7)+1)*0x06000000-1))+100000000
    value2 = (65535 ^(m_BTIndex*(((m_BTIndex%7)+1) + 1000))) * 10000000
    m_iKeyPw = value1 + value2
    print 'BTIndex: %d; iKeyPw: %d'%(m_BTIndex,m_iKeyPw)

    calculateiKey()
    Last edited by Darwin; 05-05-2015 at 11:35.

  30. Пользователь сказал cпасибо:
  31. #16
    Darwin's Avatar

    Default Re: Прошу помощи в решении формулы проверки пароля

    Если вас ограничивают 9-ю символами ввода, то в скрипте ошибка. Питоноская функция int не урезает результат до 4 байтов.

    Я говорю об этом:

    Code: Python

    def isInspektionKeyValid(self):
    result = False
    pw = None
    'aus Kofig.Datei die eingetragene Password und die zugehörige ID ermitteln'
    size = len(self.m_SmartKeyList)
    for i in range(size):
    SmartKeyData = self.m_SmartKeyList[i]
    if(int(SmartKeyData.m_ID) == self.smartKeyID):
    self.calculateiKey()
    pw = SmartKeyData.m_PW
    if( int(pw) == int (self.m_iKeyPw) ):
    result = True
    break
    Last edited by Darwin; 05-05-2015 at 11:39.
    Счастлив кто отдал, а не взял. (с) Inception

  32. Пользователь сказал cпасибо:
+ Reply to Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
All times are GMT. The time now is 01:27
vBulletin® Copyright ©2000 - 2018
www.reverse4you.org