Помощ - Търси - Регистрирани - Календар
Пълна версия: Малка ИРЦ задачка
UniBG Forums > Дискусии > Dexter's Lab > Програмиране
demond
да кажем че сте сериозен ботмастър който сам си пише ботовете и рънва мрежа от 5000 дрони; задачката е заобиколите защитните програмки на онгеборен ("сансърв") и скриптове като спамбастър (не че има други такива, говоря по принцип) като генерирате псевдо-случайни никове/иденти и гекос на дроните; казвам "псевдо" защото не трябва да съдържат повече от 2-3 съгласни една до друга

напишете програма за това на любимия си език
Narf
Не мисля, че това е много уместно да го има точно във форума на мрежата.
demond
oh yeah, има реална опасност след като 10 години никой не го е правил, точно сега някой от модерното поколение високоинтелигентни тинейджъри да се плесне по челото след като прочете моя разкриващ съкровена тайна постинг, да напише програмата и после да вилнее безнаказан, за ужас на унибг
dlh
Интересна задачка, но се съмнявам някой да седне да пише такава програма. По-лесно е да се избистри концепцията й.

Най-общо казано:
1. Трябва успешно да симулира IRC клиент.
2. Ник/идент/име трябва да се генерират по посоченият от теб начин - спомням си, че някакъв турчин беше написал един алгоритъм, който правеше невъзможно засичането на вируса по генерирани ник/идент/име, защото можеше да се генерира на случайна основа абсолютно всеки стринг.
3. Трябва да може да живее без теб + децентрализирано управление.
3.1. Тук вероятно ще трябва да си напишеш някакъв сървър, който да върви на 80 порт и да обслужва дроните, които сами се анонсират там (през 5-10мин). Най-добре да се използва динамичен DNS.
3.2. Трябва да се помисли за управлението на тези дрони. Да се отвори порт на заразеният компютър не е добра идея, затова трябва да се прибегне до друга тактика.

Ето я основата, продължавайте нататък wink.gif

Ако ongeboren смята темата за опасна, ще я затрием smile.gif
DeStRuCti0N
Правя инсталационен пакет съдържащ mirc.exe един dll , който да hide exe-то и няколко скрипт файла. След инсталацията въпросното exe е на startup и т .н.
Генерирам си съвсем свободно nicks/idents от файлове съдържащи имена, текст от книга и т.н. Всички заразени се свързват към определен сървър (примерно турски), където на никой не му пука за нищо и от там си ги командвам.
След което готовия "продукт" се сканира с достатъчно много антивирусни програми и евентуално му разпознаване като вирус ще наложи корекция на скриптинга до ниво където ще е "чист"
Изобщо не е трудна реализацията.
Такива сценарии се в действие от години. Освен това няма кой да ме спре, защото няма SanServ :>

p.s. Преди няколко месеца имаше подобен "инцидент" и тъй като SanServ е спрян, властимеющите слагаха масово глайнс на клас C мрежи, че дори и на клас B.
Guest
ongeboren nyama nishto protiv temata smile.gif

Durja samo da vmetna, che kakvoto shte napisha e razsujdenie s obrazovatelna cel i po nishto ne otgovarya na vijdaniata mi i tova, kakvo bih napravil. Sushto taka ne nosya otgovornost za eventualni prichineni moralni, materialni ili finansovi shteti.

Moite korekcii kum zadachata sa slednite.. Vmesto da se izpolzvat psevdo-random strings, moje da se izpolzval realni takiva, koito sa vzeti ot /who #nyakojgolyamchan, koito sashto mogat da se randomizirat malko, no shte prilichat naj-mnogo na realni lica.

Posle bih simuliral choveshka aktivnost - vlizane v proizvolni i populyarni kanali, eventualno activno vklyuchvane v online irc igri (zavisi estestveno dali poslednoto nyama da iziskva mnogo ram, ama kato se ima predvid, che povecheto bozi sa pisani kato mirc shits, i polzvat i mirc.exe i sa v ramkite na 1.5MB pone, to bi bilo priemlivo, ako programcheto e pisano ot scratch na C.

Dotuk realno poglednato nyama kak i koj da razbere, che daden client e drone, a ne realen potrebitel. Ostava samo vaprosa kak edin drone bi nameril drugite drones.. tova predpolagam, che bi bilo malko po-slojno, no moje da se izmislyat nyakakvi ugovorki, koito lesno da mogat da se promenyat.. Nyama da navlizam tuk tochno v detaili, samo shte kaja, che e vuzmojno da se simulirat uj random irc sabitia/events, koito realno da mogat da budat prosledeni v ramkite na chas - dva i kogato daden client otgovarya na opredeleni iziskvania, nablyudavashtite go drones izbirat edin random drone, kojto da mu prati udp packet (begin handshake) na opredelen port, ili icmp ping, ako shte i irc ping/version za da se izbegnat NAT issues.. vuzmojnosti ima mnogo. Estestveno lesno moje da se razbere dali otsreshta e drone ili anti-drone bot i ako ne e drone, vaprosniat client moje da bude ignoriran, a informaciata za nego da se razprostrani sred vsichki ostanali drones.

Edin put kato zapochne rukostiskaneto, moje da se ugovori port za connection - za da e razlichen vseki put, koeto shte zatrudni zadachata na network administratorite na isp-tata da zasichat i eliminirat vaprosniat drone; vapros na vreme e dokato se napravi purviat connection, sled koeto noviat drone biva priet v mesh network-a ot vsichkite ostanali drones. Drone mastera v sluchaja po nishto ne se otlichava ot vseki edin drug drone. Vuzmojno e sushto taka da se izmisli public & private key enkriptirana command i update sistema, koiato shte pozvoli samo na botnet mastera da comandva bots i da vuvejda updates.

Taka predlojenata sistema bi bila trudna, da ne kaja nevuzmojna za zasichane ne samo v unibg, no i vuv vsyaka edna druga irc mreja.
dlh
1. Преди дрона да направи /who #голямканал, трябва да е вече онлайн с някакъв псевдоним.
2. Ако дрона ще следи за действия, това автоматично го прави разпознаваем за сансърв, който може да следи за същите действия, да праща пакет, етц.
3. Това с mesh мрежата е интересно, но поддръжката на голяма такава мрежа ще отнема много ресурси на всеки дрон - хардуерни и мрежови. Може би е добра идея да се "назначават" автоматично хъбове, според хардуерни ресурси/натоварване на машината + време за отговор от google.com, примерно.
demond
вие много изместихте фокуса на дискусията; темата за създаване и управление на високоефективна мрежа от дрони е интересна, но много обширна и много теоретична (малко хора са квалифицирани да създадат подобно нещо на практика, още по-малко имат време за това - освен ако работят за професионални флудери или самите те са професионални флудери които взимат пари за флуд на комерсиални сайтове - но такива хора не обсъждат по форуми това с което си вадят хляба)

тука просто говорим за генериране на стрингове - примерно с избиране на случайна пермутация - с единственото условие да няма 2-3 съгласни една до друга - проста практическа задачка, за упражнение на младото поколение програмисти на този форум
DeStRuCti0N
Не е нужно да си програмист за да го направиш.
Както казах и в предишния си постинг ще използвам готови думи,които малко ще "поукрася".
примерни дронес:
[§] [Join] existenceLovet (~existence@xxx.xxx.xxx.xxx)
[§] [Join] it|it (~it|it@xxx.xxx.xxx.xxx)
[§] [Join] never-when (~never-whe@xxx.xxx.xxx.xxx)
Дори и да се разберат 5-те принципа за генерирането на никове използвани в случая, няма да има как да се засекат/остранят, освен ако не се разполага с базата данни. Но това също е сложно/рисковано, тъй като в нея може да фигурират и реални никове.
Разбира се, че няма да побликувам сорс кода, тъй като ще се използва за abuse.

p.s. на onge системата ми изглежда сложна и не ми е по възможностите :>
demond
бе DeStRuCti0N,

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

второ, ако не си програмист или ако нямаш намерение да пишеш програма или поне да коментираш от програмистка гледна точка конкретната задача (а не тая която ти си си въобразил че коментираме), просто си оф-топик
DeStRuCti0N
QUOTE(demond @ Jul 22 2006, 06:16 AM)
да кажем че сте сериозен ботмастър който сам си пише ботовете и рънва мрежа от 5000 дрони; задачката е заобиколите защитните програмки на онгеборен ("сансърв") и скриптове като спамбастър (не че има други такива, говоря по принцип) като генерирате псевдо-случайни никове/иденти и гекос на дроните; казвам "псевдо" защото не трябва да съдържат повече от 2-3 съгласни една до друга

напишете програма за това на любимия си език
*

Както обикновено извърташ нещата.
Идеята е да се генерират никове, а това какво ще използвам си е моя работа.
В случая работи и толкова.
Освен това не сме на изпит.
Знаем, че си програмист и вместо да сондираш мнения вземи напиши твоята концепция.
п.с. ето код на произволна генерация, който не е ефективен според мен
tzt {
//echo -a $r(a,z) $+ a $+ $r(a,z) $+ e $+ $r(a,z) $+ i $+ $r(a,z)
}
Guest
V takuv sluchaj predpolagam, che bi tryabvalo da se oburna kum nyakoj lingvist, za da mi kaje koi suchetania ot suglasni sa nevuzmojni.. naprimer neshta kato "hs" "hc", makar che to zavisi ot ezika. V momenta v kojto imame nyakakva podobna informacia, mojem da si napravim pseudo random dumi, koito dori proizneseni, biha imali nyakakvo zvuchene, makar i da im lipsva smisul. Inache e elementarno dokato postroiavame dumata da gledame dali prednite 2 bukvi sa suglasni i ako sa suglasni da iskame zaduljitelno glasna.
demond
QUOTE(DeStRuCti0N @ Jul 22 2006, 11:25 PM)
tzt {
//echo -a $r(a,z) $+ a $+ $r(a,z) $+ e $+ $r(a,z) $+ i $+ $r(a,z)
}
*


не отговаря на условието на задачата, допуска повече от 2-3 съгласни една до друга
demond
QUOTE(Guest @ Jul 22 2006, 11:26 PM)
V takuv sluchaj predpolagam, che bi tryabvalo da se oburna kum nyakoj lingvist, za da mi kaje koi suchetania ot suglasni sa nevuzmojni.. naprimer neshta kato "hs" "hc", makar che to zavisi ot ezika. V momenta v kojto imame nyakakva podobna informacia, mojem da si napravim pseudo random dumi, koito dori proizneseni, biha imali nyakakvo zvuchene, makar i da im lipsva smisul. Inache e elementarno dokato postroiavame dumata da gledame dali prednite 2 bukvi sa suglasni i ako sa suglasni da iskame zaduljitelno glasna.
*


няма смисъл, ти не можеш да си позволиш да баннеш хора чиито никове имат лингвистично невъзможни комбинации от букви... или пък що да не можеш, няма да си по-зле от делян и "Smyrtta_dojde_pri_vas" wink.gif
DeStRuCti0N
Дали ?
Просто не ми допадат "смислово" никовете, ако си поиграя може и да ги докарам до някакъв вид.
CODE
qadefis,rauesig,xajebiu,xavesil,labehip,baleyil,fatemic,cajejic,yaaeoim,sadeaig,

kayeciz,lawelia и т.н.

Да видим твоето "решение"
demond
QUOTE(DeStRuCti0N @ Jul 23 2006, 12:11 AM)
Дали  ?
Просто не ми допадат "смислово" никовете, ако си поиграя може и да ги докарам до някакъв вид.
CODE
qadefis,rauesig,xajebiu,xavesil,labehip,baleyil,fatemic,cajejic,yaaeoim,sadeaig,

kayeciz,lawelia и т.н.


ах, то имало hardcoded гласни smile.gif sorry, пропуска е мой; mirc scripting code не е сред любимите ми четива

като казах "псевдо-случайно" имах предвид не съвсем случайно (условието за съгласните), но и не прекалено неслучайно smile.gif т.е. не би трябвало да се използват hardcoded characters

QUOTE
Да видим твоето "решение"
*


аз бих генерирал случайни пермутации на определено множество неповтарящи се букви (с опрелено съотношение между броя на гласните и съгласните в това множество) така че да удовлетворяват условието
DeStRuCti0N
Е не, отказвам се.
Мога да ги направя както искаш, САМО ЧЕ ТОГАВА ЩЕ ИМА НОВО УСЛОВИЕ, което просто си пропуснал да споменеш.
Задачите ти до момента са от типа: "Каква вещ е слон на колела?"
Ако се отговори - подвижна, защото е на колела, ти ще кажеш, че в момента е в покой, следователно е неподвижна. Ако случайно се отговори че е неподвижна, тогава ще кажеш, че е, защото е на колела, тоест ти винаги си прав.
В следващите ти "задачи", които все някога ще дадеш, не пропускай да споменеш условието, че каквото и да се напише - прав е винаги и единствено демонд.
demond
QUOTE(DeStRuCti0N @ Jul 23 2006, 12:37 AM)
Е не, отказвам се.
Мога да ги направя както искаш, САМО ЧЕ ТОГАВА ЩЕ ИМА НОВО УСЛОВИЕ, което просто си пропуснал да споменеш.
Задачите ти до момента са от типа: "Каква вещ е слон на колела?"
Ако се отговори - подвижна, защото е на колела, ти ще кажеш, че в момента е в покой, следователно е неподвижна. Ако случайно се отговори че е неподвижна, тогава ще кажеш, че е, защото е на колела, тоест ти винаги си прав.
В следващите ти "задачи", които все някога ще дадеш, не пропускай да споменеш условието, че каквото и да се напише - прав е винаги и единствено демонд.
*


бе човече, ти или наистина не можеш да стоплиш, или си просто дървен философ

сериозно ли си мислеше че бих си губил времето да пускам тая тема ако исках да видя елементарно позициониране на гласни с функция random() между тях?

целта на темата, изразена чрез задачата, е да се упражнят младите програмисти в нещо което е често срещано в практиката (генериране на пермутации) - с условие което възпрепятства copy/paste на код намерен в гугъл; целта на темата не е преебаване на онгеборен и изобщо унибг - това че поставих задачата в такъв контекст беше само закачка за внасяне на пикантен привкус, иначе щеше да е много сухо - наивно е да се взема насериозно

все пак благодаря ти за това че си направи труда да предложиш решение, макар и явно да не си в час за какво е упражнението
Guest
QUOTE(demond @ Jul 23 2006, 12:09 AM)
няма смисъл, ти не можеш да си позволиш да баннеш хора чиито никове имат лингвистично невъзможни комбинации от букви... или пък що да не можеш, няма да си по-зле от делян и "Smyrtta_dojde_pri_vas" wink.gif
*


Taka e, ne moga da si go pozvolya i imenno zatova podobno reshenie bi udovletvoryavalo zadachata, tuj kato nali tochno tova beshe celta ? da ne moje da bude zasichano/spirano ot elementarni zashtiti kakvito ima tuk i tam.
lorddoskias
CODE
$vowels = "aeuowi";
$consonants = "qrtsdfghjklmnbvcxz";
$nick .= $vowels[rand(0,6)];
$nick .= $vowels[rand(0,6)];
$nick .= $consonants[rand(0,18)];
$nick .= $consonants[rand(0,18)];
$nick .= $consonants[rand(0,18)];
$nick .= $consonants[rand(0,18)];
$nick .= $vowels[rand(0,6)];
echo $nick;


ei tova, edinstveniq problem e, 4e se polu4ava stati4nost toest 2 glasni, 4 syglasni, glasna. Makar 4e s nqkyv cikyl moje bi bi moglo da se "zasili" randomiziraneto. Utre moje da se pomy4a. vse pak sym na4iane6t v php wink.gif
dlh
CODE
<?php

$cons = array('b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','z');
$vowels = array('a','e','i','o','u','y');
$nick = array();
$stringsize = rand(4,8); // големина на генерираният псевдоним

for ($i = 0; $i < $stringsize; $i++) {
 $pick = rand(1,2); // колко букви да вземе
 $mod = rand(1,2); // гласна или съгласна
 $currsize = sizeof($nick); // текуща големина на генерираният псевдоним
 $lastchar = $nick[$currsize-1]; // последен знак
 
 // избягване натрупването на гласни/съгласни
 if (($mod % 2) == 0 && in_array($lastchar, $cons)) {
   $mod = 1;
 } elseif (($mod % 2) != 0 && in_array($lastchar, $vowels)) {
   $mod = 2;
 }
 
 if (($mod % 2) == 0) { // съгласни
   $index = array_rand($cons, $pick);
   if (gettype($index) == 'array') { // ако предната функция е избрала две букви
     for ($r = 0; $r < sizeof($index); $r++) {
       $nick[] = $cons[$index[$r]];
     }
   } else {
     $nick[] = $cons[$index];
   }
 } elseif (($mod % 2) != 0) { // гласни
   $index = array_rand($vowels, $pick);
   if (gettype($index) == 'array') { // ако предната функция е избрала две букви
     for ($r = 0; $r < sizeof($index); $r++) {
       $nick[] = $vowels[$index[$r]];
     }
   } else {
     $nick[] = $vowels[$index];
   }
 }
}

die(implode($nick));

?>


Не съм гонил оптимизация.
demond
оригинален подход длх.. малко странно изглежда проверката за array, но моите очи не са php-тренирани smile.gif
dlh
има и други начини, но повече целях четаемост smile.gif
все пак си разбрал, че е проверка за array wink.gif
Leader
CODE
;; rand nickz
alias gimmenick {
 :start
 var %glasni = e y u i o a
;; tva mai ne beshe tochnoto opredelenie za teia bukvi
 var %zvuchni = l m r n
 var %bezzv = t p s d f g h j k z c v b n m x w
 var %chars = $chr(91) $chr(93) ` ^ _ - $chr(124) \ $chr(124) $chr(123)  
 var %nicklen = $rand(7,13)
 var %podr = $rand(1,2)
 var %option = $1
 var %randnick = "",%i = "", %j = ""
;;; vars za samia nick
 var %gl = "", %zv = "", %bezv = "", %ch = "", %dg = ""
 var %ng = "", %nz = "", %nb = "", %type = $rand(1,2), %vrb = 1
 if %nicklen <= 8 {
   %i = 3
   %j = 5
   %ng = $rand(%i,%j)  
   $iif(%ng <= 3,%nz = $rand(3,4),%nz = $rand(2,3))
   %nb = $calc(%nicklen - (%ng + %nz))
 }
 else {
   %i = $calc(2 + %nicklen - 8)
   %j = $calc(2 + %i)
   %ng = $rand(%i,%j)
   $iif(%ng <= 3,%nz = $rand(3,4),%nz = $rand(2,3))
   %nb = $calc(%nicklen - (%ng + %nz))
 }
 while %vrb <= %nicklen {
   if %type = 1 {
     if %nz != 0 { %randnick = $addtok(%randnick,$gettok(%zvuchni,$rand(1,6),32),32) | dec %nz }
     if %ng != 0 { %randnick = $addtok(%randnick,$gettok(%glasni,$rand(1,6),32),32) | dec %ng }
     if %nb != 0 { %randnick = $addtok(%randnick,$gettok(%bezzv,$rand(1,17),32),32) | dec %nb }
   }
   if %type = 2 {
     if %nb != 0 { %randnick = $addtok(%randnick,$gettok(%bezzv,$rand(1,17),32),32) | dec %nb }
     if %ng != 0 { %randnick = $addtok(%randnick,$gettok(%glasni,$rand(1,6),32),32) | dec %ng }
     if %nz != 0 { %randnick = $addtok(%randnick,$gettok(%zvuchni,$rand(1,6),32),32) | dec %nz }

   }
   inc %vrb
 }
 if %option = 2 {
   %randnick = $replace(%randnick,i,1,e,3,o,0)
 }
 if %option = 3 {
   %randnick = $upper(%randnick)
 }
 if %option = 4 {
   %randnick = $gettok(%chars,$rand(1,10),32) %randnick $gettok(%chars,$rand(1,10),32)
 }
 if %option = 5 {
   %randnick = $gettok(%chars,$rand(1,10),32) $gettok(%chars,$rand(1,10),32) %randnick $gettok(%chars,$rand(1,10),32) $gettok(%chars,$rand(1,10),32)
 }
 if %option = 6 {
   %randnick = $instok(%randnick,$gettok(%chars,$rand(1,10),32),$rand(1,$calc(%nicklen -1)),32)
 }
 if %option = 7 {
   %randnick = %randnick $rand(0,9) $rand(0,9)
 }
 if $left(%randnick,1) isnum || $left(%randnick,1) = - {
   echo 4 -a Again…
   goto start
 }
 echo 4 -a >> $remove(%randnick,$chr(32))
}


Rezultati:
1. mefyai lunaye lucmeroya dayr
2. gulym301 r3tua0 cyma03 myl3n0
3. ROZAGUNIE RILYMU LOMNUY UWMAKOS
4. {pumiray{ ]nalrou[ ]sareul[ `ahepoyi` _hudanymoe`
5. ]{ijmozu`^ ||paun\| [-fokiley|]
6. nukidme^ |gielshau lut_rehi nuklaw`o
7. maliu17 mazy12 yul59 lity74
demond
the beauty of mirc scripting wink.gif

чакам теодора (която трябва е чела Кнут) да представи нещо класическо на C smile.gif
Това е семпла версия на форума. За да видиш пълната версия, която има повече информация, по-добра подредба и снимки, натисни тук.
Invision Power Board © 2001-2008 Invision Power Services, Inc.