Другой возможный подход заключается в использовании функций LAG()
и LEAD()
, которые возвращают данные из предыдущей и последующей строк, формирующих один и тот же результат.
-- Table
DECLARE @OrderDetail TABLE (
Id int primary key,
OrderId int,
ItemId int,
OrderDate DateTime2,
Lookup varchar(15)
)
INSERT INTO @OrderDetail
VALUES
(1, 10, 1, '2018-06-11', 'A'),
(2, 10, 2, '2018-06-11', 'BE'), --this
(3, 2, 1, '2018-06-04', 'DR'),
(4, 2, 2, '2018-06-04', 'D'), --this
(5, 3, 2, '2018-06-14', 'DD'), --this
(6, 4, 2, '2018-06-14', 'R');
-- Item and order
DECLARE
@ItemId int = 2,
@orderid int = 10
-- Statement
-- Get previois and next ID for every order, grouped by ItemId, ordered by OrderDate
;WITH cte AS (
SELECT
Id,
LAG(Id, 1) OVER (PARTITION BY ItemId ORDER BY OrderDate) previousId,
LEAD(Id, 1) OVER (PARTITION BY ItemId ORDER BY OrderDate) nextId,
ItemId,
OrderId,
Lookup
FROM @OrderDetail
)
-- Select current, previous and next order
SELECT od.*
FROM cte
CROSS APPLY (SELECT * FROM @OrderDetail WHERE Id = cte.Id) od
WHERE (cte.OrderId = @orderId) AND (cte.ItemId = @ItemId)
UNION ALL
SELECT od.*
FROM cte
CROSS APPLY (SELECT * FROM @OrderDetail WHERE Id = cte.previousId) od
WHERE (cte.OrderId = @orderId) AND (cte.ItemId = @ItemId)
UNION ALL
SELECT od.*
FROM cte
CROSS APPLY (SELECT * FROM @OrderDetail WHERE Id = cte.nextId) od
WHERE (cte.OrderId = @orderId) AND (cte.ItemId = @ItemId)
Выход:
Id OrderId ItemId OrderDate Lookup
2 10 2 11/06/2018 00:00:00 BE
4 2 2 04/06/2018 00:00:00 D
5 3 2 14/06/2018 00:00:00 DD
От документация VIM :
, Если это было выполнимо на Pentium 133, я думаю, что у Вас есть очень хороший шанс. :)
я или использовал бы #vim, чтобы попросить детали об алгоритме или просмотреть исходный код, чтобы выяснить, как шифрование работает, и затем запишите программу криптоанализа.
Не уверенный, если это может помочь:
Нарушителя Склепа Объясняет, как повредить файл, зашифрованный со "склепом", мог бы дать Вам начальную точку (по крайней мере, с более старыми версиями vi, шифрование было основано на склепе).
Действительно ли возможно, что у Вас могли быть проблемы повреждения данных в дополнение к Вашим проблемам шифрования?
, Если бы я шел в грубую силу это, я думаю, что записал бы алгоритм, который начал бы пробовать все изменения паролей, которые я, возможно, привык перед хождением дальше для атак с подбором по словарю. Все же после слушания Вашей истории - у меня есть это нытье, чувствуя, что Вы не забыли своего пароля, а скорее была проблема повреждения данных где-нибудь по пути, которая испортила Ваш password/crypttext/cryptokey/whatever.
Это древнее сообщение группы новостей имело подобную проблему к Вашему:
Моя проблема состояла в том, что я случайно зашифровал сценарий с помощью vi и не мог вспомнить ключ. большое спасибо всем те, кто ответил.
Предложения были следующие:
- использование vi-x и предположение ключ (я попробовал это без успеха)
- пишут программу, которая выполняет вызов склепа и пробует вероятные сочетания клавиш. человек, который предложил это, счел, что потребуется приблизительно 5 минут для взламывания
- загрузка, CWB (инструментальные средства прерывателей склепа) формируют архивы, которые помогут расколоться
- , отправляют проблему на sci.crypt.newsgroup включая первые 128 байтов файла после шифрования и этих байтов перед шифрованием (если я мог бы помнить), и кто-то в группе мог бы расколоться, это для меня
- перепечатывает сценарий
Один хлев, который Вы имеете к повреждению, это - Вы, знают, каков пароль "должен" был быть. Так, даже если бы у Вас была случайная опечатка, то она все еще немного напомнила бы Ваш намеченный пароль. Возможно, Вы могли запустить там, записать программу для генерации всех возможных комбинаций намеченного пароля с 1 или 2 символьными mispellings-дополнениями.
В любом случае, какое аккуратное осуществление / диверсия!