Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   [javascript] помогите дописать скрипт с регулярными выражениями (https://forum.antichat.xyz/showthread.php?t=46703)

Thanat0z 14.08.2007 14:02

[javascript] помогите дописать скрипт с регулярными выражениями
 
Ниже вы можете видеть скрипт для браузера, который по нажатию Shift+Enter преобразует строку в форме ввода (в форме быстрого ответа для отправки текста)

из
04b2539eecc816ecb9af7adb9ce60493:пароль
в
Код:

04b2539eecc816ecb9af7adb9ce60493:пароль
То есть текст после последнего двоточия выделятся красным цветом.

Что нужно
1) чтоб он корректно воспринимал DES и mysql3 хеши 2) тоже самое для freebsd md5
3) корректная работа с записями
хеш:пароль
логин:хеш:пароль
хеш:соль:пароль
логин:хеш:соль:пароль

От чего можно отталкиваться

Mysql - 16 символов
Как и md5 состоит из символов abcdef0987654321

DES - 13 символов

freebsd md5 - 32 символа (пример $1$12345678$tDiEmRj8eI0HYEz5Z9P3L/)
Начинается с $1, между $ идет соль до 8 символов (выделил синим цветом), далее 22 символа

ЗЫ для сальтовых мд5 соль обычно 3 или 5 символов, но пока и без этих заморочек стабильно работает

Сам не шарю, на многое не способен

Код:

// Ctrl+Enter RedHash Submits
// version 0.2
// 09.08.2007
// Это Greasemonkey user script.
// Скачать Greasemonkey можно тут: http://greasemonkey.mozdev.org/
// Инсталируйте Greasemonkey
// В вкладке Tools будет новое меню "Install User Script".
// Инсталируте скрипт с дефолтными настройками
// Тестировалось с https://addons.mozilla.org/ru/firefox/downloads/file/16465/greasemonkey-0.7.20070607.0-fx.xpi
// --------------------------------------------------------------------
// Opera 8/9 совместимый скрипт.
// Для инсталяции разместите скрипт в какой-то папке и укажите к ней путь как к папке с пользовательскими скриптами
// Tools > Preferences > Advanced > Content > Javascript Options
// для https в Опере нужно специальное разрешение
// opera:config#UserPrefs|UserJavaScriptonHTTPS
// ---------------------------------------------------------------------
// тестировалось на Firefox 2.0 и Opera 9.21
// ---------------------------------------------------------------------
// ==UserScript==
// @name          Ctrl+Enter RedHash Submits
// @description  Allows submitting on Ctrl+Enter in any input and textarea
// @include        *
// ==/UserScript==

function redhash(text) {

    replacements = [

  [/(\w{31,32}\:)([^\s\r]+\:)([^\s\r]+)/mig, '$1$2$3'],
  [/(\w{31,32}\:)([^\s\r\:]+$)/mig, '$1$2'],

    ];

    s = text
    for( i=0; i < replacements.length; i++) {
        s = s.replace(replacements[i][0], replacements[i][1])
    }
   
    return s
}

function trigger_submit_on_ctrl_enter(e) {
    if ((e.keyCode==13) && (e.ctrlKey || e.shiftKey)) {
        p = this.parentNode
        i = 0
        if (this.nodeName == 'TEXTAREA')
            this.value = redhash(this.value)

        while (p.nodeName != 'FORM' && i++ < 100)
            p = p.parentNode

        if (p.nodeName == 'FORM' && e.ctrlKey)
            p.submit()
    }
}

if (document.evaluate) { // Firefox
    allInps = document.evaluate("//textarea[not(@id='instant_comment_textarea')] | //select | //input", document, null,
                                    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
    for (var i = 0; i < allInps.snapshotLength; i++) {
        t = allInps.snapshotItem(i);
        t.addEventListener("keydown", trigger_submit_on_ctrl_enter, 0);
    }
} else { // Opera 8 does not support XPath
    elemTags = ['textarea', 'select', 'input']
    for(j = 0; j< elemTags.length; j++) {
        inps = document.getElementsByTagName(elemTags[j])
        for (var i = 0; i < inps.length; i++)
            inps[i].addEventListener("keydown", trigger_submit_on_ctrl_enter, 0);
    }
}


Thanat0z 21.08.2007 22:13

делаю ап. Кто следелает хотя бы корректное распознавание хеша по длине в

13, 16, 31-32, 40

тому +20

Basurman 21.08.2007 23:12

добавить имхо в replacements = [

Код:

[/(\w{16}\:)([^\s\r\:]+$)/mig, '$1$2'],
- mysql (это к примеру)
для DES туда надо вписывать спец. символы (слеши, точки и тд)

Пока не проверить, надо скачивать гризмонкей и тд

Точно так же делаются:
Цитата:

хеш:пароль
логин:хеш:пароль
хеш:соль:пароль
логин:хеш:соль:пароль

Thanat0z 21.08.2007 23:13

когда я в тупую делал реплейсы

16, 32, 13

и в тексте были разные хеши, то для хешей в 32 делалась тройная окраска, что не есть гут

Basurman 21.08.2007 23:16

кстати а нафига там
Код:

[/(\w{31,32}\:)([^\s\r]+\:)([^\s\r]+)/mig, '$1$2$3'],
это получается 32симв:непробелнеCR:непробел неCR :)
Типа соль? :)

P.S. ок, сейчас посмотрю поставлю

Thanat0z 21.08.2007 23:19

Цитата:

Сообщение от Basurman
Типа соль?

да, скрипт задумывался для работы без логина, но пока проблем не было

Red_Red1 22.08.2007 01:05

Танатоз хочу уточнить что будет входнымы данными для скрипта. Т.е. какого вида будет переменная (text) в function redhash(text). Это будет текст вида
Цитата:

хеш:пароль
логин:хеш:пароль
хеш:соль:пароль
логин:хеш:соль:пароль
в любых сочетаниях, или же ЛЮБОЙ текст в котором встречаються записи вида хеш:пароль и т.д. по условию задачи и уже в этом тексте нужно найти записи, определить что из них какой хеш и только тогда подсветить пароль.
Читая пост я понял что основное это
Цитата:

То есть текст после последнего двоточия выделятся красным цветом.
У меня есть скрипт на ПХП который может взять файл вида
Цитата:

хеш:пароль
логин:хеш:пароль
хеш:соль:пароль
логин:хеш:соль:пароль
в любых сочетаниях, и на выходе создать файл с подсвечеными паролями. Если это оно могу выложить. Если не так понял задачку сильно не бить, лучше раскажите что не так понял.

Thanat0z 22.08.2007 01:28

нужен яваскрипт, чтоб на стороне клиента делать действия

ЗЫ если грубо взять, то надо выделять текст именно после последнего двоеточия, тут правильно заметил

Red_Red1 22.08.2007 12:13

Танатоз есть такая штука
Код:

Исходный текст<br>
 aaaaaaaa:bbbb!cbbb sdfsdfs    sdf  aaaaaa aa:yb@#%$%bbbbbaaaaaaaa:ybbbbbb aaaaaaaa:ubbbb@%^bb aaaaaaaa:ibbbbbb Привет Мир!Я делаю скрипт....        aaaaaaa:ibbbbbb
<br>
<script>
function redhash(text) {
var re = /:([^ \f\n\r\t\v:]+)\s/mig;
var str = text;
document.write(str.replace(re,':<b>$1</b> '));
}


var r = " aaaaaaaa:bbbb!cbbb sdfsdfs    sdf  aaa#$aaa aWR$%a:bbbbbaaaaaaaa:ybbbbbb $aaa$aaaaa:ubbbb@%^bb aaaaaaaa:ibbbbbb Привет Мир!Я делаю скрипт....        aaaaaaa:ibbbbbb ";
</script>
Готовый текст<br>
<script>
redhash(r) ;
</script>

Скрипт ищет в тексте записи вида символы:символы:.........:симво лы:пароль и подсвечивает пароль. Пример сдесь http://maksrusya.narod.ru/java.html
Если подходит можно адаптировать под твой скрипт. Но есть проблемка я не могу запустить исходный (твой) скрипт.

inv 22.08.2007 17:59

Если вдруг кто-то не понял автор темы просит изменить\написать userjs (Opera и Мозилла (работает при установке плагина) смотри operafan.net)


Время: 07:49