1с бухгалтерия...ответы на тесты

Discussion in 'Реверсинг' started by Dread, 12 Feb 2007.

  1. Dread

    Dread Elder - Старейшина

    Joined:
    4 Dec 2005
    Messages:
    28
    Likes Received:
    2
    Reputations:
    0
    кто знает как сломать файлы екселя с макросами.........точнее нада достать ответы к вопросам от 1С Бухгалтерии!
     
  2. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    тоесть "сломать"? запароленный документ нужно открыть, или 4то?
     
  3. АvataR

    АvataR New Member

    Joined:
    24 Nov 2006
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Мне кажется он имел ввиду выдрать из макросов ответы....
     
  4. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    вообщем автору тема явно не нужна, гадать не будем. закрыто
     
  5. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    открыл по просьбе топикстартера
     
  6. Dread

    Dread Elder - Старейшина

    Joined:
    4 Dec 2005
    Messages:
    28
    Likes Received:
    2
    Reputations:
    0
    да ты прав полностью......пароли к макросам я уже вскрыл......а вот где там лежат ответы я не могу разобраться......



    ктонить сталкивался с таким!?
     
  7. Dread

    Dread Elder - Старейшина

    Joined:
    4 Dec 2005
    Messages:
    28
    Likes Received:
    2
    Reputations:
    0
    ау!

    неужели никто не вкурсе............?
     
  8. alfaservice

    alfaservice New Member

    Joined:
    27 Feb 2007
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    А что сложно проверить условия ну типа

    Code:
    если это так тогда
          так 
    иначе если это 
          не так
    конецесли
    во блин называется привык к 1С

    Code:
    if это так 
          так 
    else 
          не так
    endif
    
    Ну вообщем смысл я думаю понятен
     
    #8 alfaservice, 3 Mar 2007
    Last edited: 3 Mar 2007
  9. Dread

    Dread Elder - Старейшина

    Joined:
    4 Dec 2005
    Messages:
    28
    Likes Received:
    2
    Reputations:
    0
    Public StartTime As Long
    Public CurrentTime As Long
    Public TimeBeforeEnd As Long
    Public Const TimeLimit = 30 * 60


    Private Sub ПредыдущийЛист()
    '

    ' Макрос записан (Вася Пупкин)
    '

    ' Проверяем, осталось ли еще время

    CurrentTime = Timer()
    TimeBeforeEnd = TimeLimit - (CurrentTime - StartTime)
    If TimeBeforeEnd <= 0 Then
    MsgBox ("Время экзамена истекло")
    UserForm1.CommandButton3.Enabled = False
    UserForm1.Show
    End If

    For i = 1 To ActiveWorkbook.Sheets.Count - 1
    ActiveWorkbook.Sheets(i).Cells(1, 12).Value = Format(Int(TimeBeforeEnd / 60), "00") + ":" + Format(TimeBeforeEnd Mod 60, "00")
    Next i

    i = ActiveSheet.Index
    If (ActiveSheet.Index = 1) Then
    GoTo Out
    Else
    Sheets(ActiveSheet.Index - 1).Select
    End If
    Out:
    End Sub

    Private Sub СледующийЛист()
    '

    ' Макрос записан (Вася Пупкин)
    '
    ' Проверяем, осталось ли еще время

    CurrentTime = Timer()
    TimeBeforeEnd = TimeLimit - (CurrentTime - StartTime)
    If TimeBeforeEnd <= 0 Then
    MsgBox ("Время экзамена истекло")
    UserForm1.CommandButton3.Enabled = False
    UserForm1.Show
    End If

    For i = 1 To ActiveWorkbook.Sheets.Count - 1
    ActiveWorkbook.Sheets(i).Cells(1, 12).Value = Format(Int(TimeBeforeEnd / 60), "00") + ":" + Format(TimeBeforeEnd Mod 60, "00")
    Next i


    '
    If (ActiveSheet.Index >= Sheets.Count - 1) Then
    GoTo Out
    Else
    Sheets(ActiveSheet.Index + 1).Select
    End If
    Out:
    End Sub

    Private Sub Закончить()
    Dim Results(14) As String
    Dim Person(6) As String
    Dim Ans As String

    Results(0) = "Вопрос" + Chr(9) + "Ответ"

    With ActiveWorkbook.Sheets("Ответы")
    For i = 1 To ActiveWorkbook.Sheets.Count - 1
    If .Cells(22, i + 1).Value = "" Then
    Ans = "НЕТ"
    Else
    Ans = Format(.Cells(22, i + 1).Value, "0")
    End If
    Results(i) = Format(.Cells(21, i + 1), " 0000") + Chr(9) + " " + Ans
    Next
    Person(0) = .Cells(2, 3).Value
    Person(1) = .Cells(3, 3).Value
    Person(2) = .Cells(4, 3).Value
    Person(3) = ""
    Person(4) = "Задание N" + Format(.Cells(1, 3).Value, "000000")
    Person(5) = "Код АЦС " + .Cells(16, 3).Value
    Person(6) = "Дата " + Format(.Cells(18, 2).Value, "Short date")
    UserForm1.Person.List = Person

    'Chr(10) + .Cells(3, 3).Value + Chr(10) + _
    '.Cells(4, 3).Value Chr(10) + "Код АЦС " + .Cells(16, 3).Value + Chr(10) _
    '+ "Дата " + .Cells(17, 3).Value
    UserForm1.Caption = "1C:Профессионал. Задание N" + Format(.Cells(1, 3).Value, "000000")
    End With
    UserForm1.Results.List = Results
    UserForm1.Show
    End Sub
    Private Sub Auto_Open()
    Dim Person As String

    With ActiveWorkbook.Sheets("Ответы")
    Person = .Cells(2, 3).Value + " " + .Cells(3, 3).Value + " " + .Cells(4, 3).Value
    UserForm2.Caption = "1C:Профессионал. Версия " + CStr(.Cells(1, 6)) + _
    " Задание N" + Format(.Cells(1, 3).Value, "000000")
    End With
    UserForm2.Person.Caption = Person

    UserForm2.Show
    End Sub

    нихчего не могу понять.....где могут лежать пароли!
     
  10. alfaservice

    alfaservice New Member

    Joined:
    27 Feb 2007
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Вот дополнение к твоему куску

    Из модуля формы UserForm1

    Code:
    'Проверка ответов
    N = 0
    For i = 2 To ActiveWorkbook.Sheets.Count
        A = ActiveSheet.Cells(20, i)
        B = ActiveSheet.Cells(22, i)
         C = ActiveSheet.TextBoxNum.Value
        If (((A * B) + (A + B + B)) * C) = ActiveSheet.Cells(24, i) Then 'Cells(24 +1 26.08.04
            ActiveSheet.Cells(24, i).Value = "+"
            N = N + 1
        Else
            ActiveSheet.Cells(24, i).Value = "-"
        End If
    Next
    ActiveSheet.Cells(25, 2).Value = N
    If (N >= CDec(ActiveSheet.TextBoxOtv.Value)) Then
        ActiveSheet.Cells(26, 1).Value = "Тест СДАН"
    Else
        ActiveSheet.Cells(26, 1).Value = "Тест НЕ СДАН"
    End If
    
    Расчет правильных ответов идет примерно так
    В цикле
    Проверяются строки 20 и 22 начиная со второй колонки (листа ответы)
    Вот если это выражение
    Code:
    (((A * B) + (A + B + B)) * C) =  ActiveSheet.Cells(24, i) 
    тогда ответ правильный
     
  11. alfaservice

    alfaservice New Member

    Joined:
    27 Feb 2007
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Все что заключено в # добавил я

    Начнем ломать!!!!!!!!

    ******************************************************************************************************************
    В модуле формы UserForm2

    после 'Устанавливаем время

    Переделываем строку
    If (ActiveWorkbook.Sheets("Ответы").Cells(18, 3).Value = "") Then

    В
    #
    If (ActiveWorkbook.Sheets("Ответы").Cells(18, 3).Value = "") Or (ActiveWorkbook.Sheets("Ответы").Cells(18, 3).Value <> "") Then
    #

    Для того чтобы не было ругани насчет того что несколько раз проходить один и тот-же тест нельзя
    ******************************************************************************************************************

    ******************************************************************************************************************
    Дальше

    В модуле формы UserForm1

    после
    C = ActiveSheet.TextBoxNum.Value

    добавляем
    #
    H = ActiveSheet.Cells(24, I)
    #
    Затем после
    If (((A * B) + (A + B + B)) * C) = ActiveSheet.Cells(24, I) Then 'Cells(24 +1 26.08.04
    ActiveSheet.Cells(24, I).Value = "+"
    N = N + 1
    Else
    ActiveSheet.Cells(24, I).Value = "-"
    End If

    Добавим
    #
    J = (H / C - A) / (A + 2) ' Вот собственно формула обратного расчета т.е J должна быть = правильному ответу
    ActiveSheet.Cells(29, I) = J ' Собственно здесь в цикле в каждую ячейку 29 строки листа "ответы" добавляем правильный ответ
    #
    Вобщем во время прохождения теста можно и не отвечать на вопросы, ответы все равно будут проставлены, только при условии
    что в 24 строке стоят цифры, а ни минусы или плюсы

    После коментируем строку

    ActiveWorkbook.Save

    Должно получиться

    'ActiveWorkbook.Save
    Это чтобы после окончания теста результаты не сохранялись

    ******************************************************************************************************************
    Теперь самое важное
    С листа "ответы" в обязательном порядке нужно снять защиту
    чтобы ответы могли проставится в 29 строке


    Да и еще значение "С" мне впринципе больше и не нужно. гыыыыыыыы )))))))))))))))))))))

    ******************************************************************************************************************
    Ну вот и все удачного взлома))))))))))))))))))))))
    ******************************************************************************************************************