Если сам сайт не поставлен под угрозу, и теперь так все вещи, к которым те пароли предоставляют доступ (Ваш DB, возможно?).
Я уверен, что есть лучший способ написать это, но вот 1 (SQL) решение для данного простого случая. Его можно переписать как хранимую процедуру для поиска любой произвольной строки. Также могут быть некоторые сторонние инструменты / расширения, чтобы помочь с желаемым разделением ...
select
locate('$', col, (locate('$',col, (locate('$',col) +1))) + 1) as poss3rdDollarSign, -- position of 3rd dollar sign
locate('$', col, (locate('$', col, (locate('$',col, (locate('$',col) +1))) + 1)) + 1) as poss4thDollarSign, -- position of 4th dollar sign
(locate('$', col, (locate('$', col, (locate('$',col, (locate('$',col) +1))) + 1)) + 1)) -
(locate('$', col, (locate('$',col, (locate('$',col) +1))) + 1)) - 1 as stringLength,-- length of string between 3rd and 4th dollar sign
substr(col, locate('$', col, (locate('$',col, (locate('$',col) +1))) + 1) + 1, (locate('$', col, (locate('$', col, (locate('$',col, (locate('$',col) +1))) + 1)) + 1)) -
(locate('$', col, (locate('$',col, (locate('$',col) +1))) + 1)) - 1) as string
from mytable