• Silahkan bergabung dengan chat kami di Telegram group kami di N3Forum - https://t.me/n3forum
  • Welcome to the Nyit-Nyit.Net - N3 forum! This is a forum where offline-online gamers, programmers and reverser community can share, learn, communicate and interact, offer services, sell and buy game mods, hacks, cracks and cheats related, including for iOS and Android.

    If you're a pro-gamer or a programmer or a reverser, we would like to invite you to Sign Up and Log In on our website. Make sure to read the rules and abide by it, to ensure a fair and enjoyable user experience for everyone.

Plugins

Status
Not open for further replies.

ferry_gukguk

Gukguk Love Cat
Level 2
Hi Teman-Teman Pengunjung setia Ragnarok @ Nyit-Nyit.Net

Sekarang Plugins Openkore bisa di share disini. (Di Thread sebelah agak berantakan..)

Nikmati petualangan anda di Dunia Maya bersama Ragnarok @ Nyit-Nyit.Net :peace:

Tambahan ! !
Thread ini khusus untuk Share Plugins.
Untuk Request dan tanya-tanya silahkan di sini

Untuk para member, dilarang melakukan tanya - jawab di thread ini.
Bagi yang melanggar, Warning tanpa konfirmasi.

Terima Kasih,
-_-

FerryGukguk
 

ferry_gukguk

Gukguk Love Cat
Level 2
Web Monitor Plugins

Plugins khusus untuk monitoring Bot lewat web..

Instalisasi :
Extract hasil download attachment dibawah.
Copy File berikut kedalam folder plugins di openkore
[-] WWW (Folder)
[-] template.pm (File)
[-] WebMonitorPlugins.pl (File)
[-] webMonitorServer.pm (File)

Setelah diCopy, buka web browser anda,
ketik ini :
localhost:8802

Plugins ini membuka port 8802 unt web monitornya.

Tested menggunakan Openkore V 2.0.3
 

Attachments

ferry_gukguk

Gukguk Love Cat
Level 2
Plugins Move Portal Version 2.0 Beta

Thank's to Qpalzm

Berpindah secara otomatis jika dekat dengan portal
Plugins ini dibuat untuk Server yang tidak menyediakan skill "Teleport" (idRO Fun and Chat Server) yang digunakan untuk menghindari player dari portal

Config yang dipakai untuk config.txt :
moveAuto_portal (flag)
1 - Enable
2 - Disable

moveAuto_portal_x (koodinat)
Berpindah ke lockMap di posisi x

moveAuto_portal_y (koordinat)
Berpindah ke lockMap di posisi y

Config yang dipakai untuk timeouts.txt :
ai_move_portal (delay)
Berapa lama delay unt berpindah setelah bertemu portal

Warning !!
teleportAuto_portal di config.txt harus diset 0

Cara Install
1. Download File Attachment dibawah ini
2. Extract hasil download
3. Masukkan hasil extract tadi kedalam folder Openkore\plugins
 

Attachments

Qpalzm

3 SD
Level 2
Disconnect Auto Plugins Version 2.0

Keterangan :
Merubah fungsi teleport auto menjadi disconnect auto
Plugins ini dibuat untuk Server yang tidak menyediakan
skill "Teleport" (idRO Fun and Chat Server)
yang digunakan untuk memutuskan hubungan pada saat tertentu
Dibuat oleh Qpalzm

Special thank's to FerryGukguk atas dukungan dan support
Special thank's to WarAngel atas tutor yang sangat membantu

Kode yang dipakai untuk config.txt :
disconnectAuto_hp
Otomatis disconnect pada saat hp memenuhi syarat

disconnectAuto_sp
Otomatis disconnect pada saat sp memenuhi syarat

disconnectAuto_minAggressives
Otomatis disconnect pada saat jumlah agresif lebih banyak

disconnectAuto_minAggressivesInLock
Otomatis disconnect pada saat jumlah agresif lebih banyak (pada lockmap saja)

Warning !!
Pastikan Value dibawah ini dikosongkan (TIDAK BOLEH DIISI)
Code:
teleportAuto_hp
teleportAuto_sp
teleportAuto_minAggressives
teleportAuto_minAggressivesInLock
Cara Install
1. Download Attachment dibawah ini
2. Extract hasil download tadi
3. Copy-kan hasil extract tadi kedalam folder Openkore\plugins

happy RO :smiley_beer:
 

Attachments

ferry_gukguk

Gukguk Love Cat
Level 2
Auto Delete and Make Char Plugin

Keterangan :
Plugin ini digunakan untuk menghapus dan membuat karakter di Ragnarok Online
Biasa digunakan untuk Farming Novice (Mendapatkan Novice Potion, dsb)

Instalisasi :
[-] Download Plugin Attachment dibawah ini..
[-] Extract hasil download tersebut
[-] Copy File Auto Delete and Make Char.pl hasil Extract tersebut kedalam folder Openkore\plugins

Control :
config.txt
Nama
digunakan untuk nama karakter

Email
Digunakan untuk kode pribadi kamu atau E-mail kamu saat menghapus karakter

autodelete
Digunakan untuk mengaktifkan fitur plugins ini.
1 - Mengaktifkan
0 - Menonaktifkan
macros.txt
Code:
do conf autodelete 1 kalo tugas bot nya dah selese terus do relog char lo ilang!
---------------
Credit From :
SkyWorld
www.d-bests.com
 

Attachments

Qpalzm

3 SD
Level 2
Disconnect Auto Plugins Version 3.0

News :
Versi 3 ini aku update ditambah dengan fungsi DC pada saat melihat monster...

tapi bukan sembarang DC lho... DC dengan waktu yang bisa ditentukan di config.txt...

enjoy!! :smiley_beer:

Keterangan :
Merubah fungsi teleport auto menjadi disconnect auto
Plugins ini dibuat untuk Server yang tidak menyediakan
skill "Teleport" (idRO Fun and Chat Server and Legend Server)
yang digunakan untuk memutuskan hubungan pada saat tertentu
Dibuat oleh Qpalzm

Special thank's to FerryGukguk atas dukungan dan support
Special thank's to WarAngel atas tutor yang sangat membantu


Kode yang dipakai untuk config.txt :
disconnect_plugin (flag)
1 - Enable
2 - Disable

disconnectAuto_time
waktu dalam detik untuk disconnectAuto hp, sp dan Aggressives

disconnectAuto_monster_time
waktu dalam detik untuk disconnect apabila monster berflag 4 di mon_control terlihat di layar

disconnectAuto_hp
Otomatis disconnect pada saat hp memenuhi syarat

disconnectAuto_sp
Otomatis disconnect pada saat sp memenuhi syarat

disconnectAuto_minAggressives
Otomatis disconnect pada saat jumlah agresif lebih banyak

disconnectAuto_minAggressivesInLock
Otomatis disconnect pada saat jumlah agresif lebih banyak (pada lockmap saja)


Kode yang dipakai untuk mon_control.txt :
syntax : <monster> <attack> <teleport> <search> <skillcancel> <lv> <joblv> <hp> <sp> <weight>

<teleport>:
1 teleport apabila monster terlihat di layar
2 teleport apabila monster menyerang anda
3 disconnect selama 30 detik apabila monster terlihat di layar
4 disconnect selama x detik apabila monster terlihat di layar (x dapat diatur di config.txt)
ini hanya digunakan dalam mode auto attack

Warning !!
Pastikan Value dibawah ini dikosongkan (TIDAK BOLEH DIISI)
Code:
teleportAuto_hp
teleportAuto_sp
teleportAuto_minAggressives
teleportAuto_minAggressivesInLock

Cara Install
1. Download Attachment dibawah ini
2. Extract hasil download tadi
3. Copy-kan hasil extract tadi kedalam folder Openkore\plugins

happy RO :smiley_beer:
 

Attachments

sayona

TK A
Banned
Plugins waitParty

Keterangan :
Plugins ini memerintahkan Master mencari Slave

Control :
config.txt
Code:
follow_wait (flag)
follow_wait_inLockOnly (flag)
flag :
1 - Enable
0 - Disable

Cara Install :
[1] Download waitParty.zip dari Attachment dibawah ini
[2] Extract hasil download
[3] Copy hasil extract kedalam folder Openkore\plugins

Credit goes to original writer/creator
 

Attachments

sayona

TK A
Banned
Avoid Skill Plugins

Keterangan :
Menghindar dari Skill yang akan digunakan kepada Anda

Control
Code:
avoidSkill namaSkilldisini{
radius (Jika skill area, taro radiusnya disini)
source (taro Player ato Monster disini. Case Sensitive. Kosongkan jika ingin keduanya)
method (value)
0 - Random menurut radius atau step
1 - Pindah menurut step
2 - Pindah sekitar target
3 - Teleport
4 - Attack (hanya monster)
5 - Use skill. (hanya monster)
}
Contoh :

avoidSkill Warp Portal {
source Player
radius 0
method 0
step 10
}

avoidSkill Hammer Fall {
source Monster
method 2
radius 1
step 10
}

avoidSkill Safety Wall {
source Monster
method 1
radius 2
step 10
}
avoidSkill Ice Wall {
source Player
method 3
}
avoidSkill Heaven's Drive {
source Monster
method 2
radius 2
step 10
}
avoidSkill Brandish Spear {
source Monster
method 3
}
avoidSkill Fire Bolt, Fire Wall, Water Ball {
source Monster
method 4
radius 15
step 10
}
avoidSkill Fire Bolt, Fire Wall, Water Ball {
source Monster
method 5
radius 15
step 10
skill Provoke
lvl 1
}


Cara Install :
[1] Download avoidSkill.zip dari Attachment dibawah ini
[2] Extract hasil download
[3] Copy hasil extract kedalam folder Openkore\plugins

Credit : Harry is Back
 

Attachments

ferry_gukguk

Gukguk Love Cat
Level 2
refineAuto Plugins

Keterangan :
Melakukan Refine dengan bertanya pada NPC. Tidak menambah kemungkinan berhasil, hasil refine sama seperti refine yang normal (Refine NPC)

Biasanya digunakan untuk refine dalam jumlah banyak.
Misalnya 100 Shoes maw di upgrade ampe +7.

Control :
config.txt
Code:
# refineAuto			enable / disable refineAuto
# refineAuto_npc			lokasi npc refine <map> (koordinatX) (koordinatY)
# refineAuto_distance		distance kamu dgn npc
# refineAuto_maxRefine		maximum refine rate
# refineAuto_npc_steps		npc talking sequence ketika refining
# refineAuto_equip		nama equip yang ingin direfine, tanpa +
# refineAuto_useMagnifier	menggunakan magnifier untuk menidentifikasi item yang belum diidentifikasi
# refineAuto_material		barang yang digunakan unt merefine
# refineAuto_minZenny		zeny minimum yg ada sebelum merefine
# refineAuto_getAutoAdjust	automatically adjusts getAuto
# refineAuto_incremental	when incremental refining should start (lupa lg apa ini ya.. hohohho)
# refineAuto_dcWhenDone		disconnect if resources are depleted
Contoh :
Code:
refineAuto 1
refineAuto_npc morocc_in 74 38
refineAuto_distance 3
refineAuto_maxRefine 9
refineAuto_npc_steps r1 r0
refineAuto_equip Mink Coat [1]
refineAuto_useMagnifier 0
refineAuto_material Elunium
refineAuto_minZenny 5000
refineAuto_getAutoAdjust 1
refineAuto_incremental 9
refineAuto_dcWhenDone 0
Menempa Mink Coat [1] di morocc sampai +9

Cara Install :
[1] Download refineAuto.zip dari Attachment dibawah ini
[2] Extract hasil download
[3] Copy hasil extract kedalam folder Openkore\plugins
Code:
Credit To : Harry, www.d-bests.com
cma compatible unt openkore versi 1.9.x
 

Attachments

ferry_gukguk

Gukguk Love Cat
Level 2
Plugins AutoTrade

Keterangan :/
Melakukan autoTrade untuk membeli suatu item dari karakter lain

Control:
config.txt
Code:
tradeAuto 1
dealAuto 2
Buat file baru bernama autotrade.txt di dalam folder control dengan format
Code:
# [item name] [price]
Contoh
Code:
Jellopy 100000
Keterangan : Membeli jellopy dengan harga 100k

Anda bisa membuat macro untuk membuka pub membeli suatu barang

The Plugins :
Code:
package autoTrade;
#ported from messykorexp by Joseph
#original code by systeman

use strict;
use Plugins;
use Globals;
use Log qw(message warning error debug);
use AI;
use Misc;
use Network::Send;
use Utils;

Plugins::register('autoTrade', 'automated chat room dealing', \&Unload);
my $hook1 = Plugins::addHook('AI_pre', \&call);
my $hook2 = Plugins::addHook('parseMsg/pre', \&packet);

# load table file
our %trade_lut;
my $file = "autotrade.txt";
#my $cfID = Settings::addConfigFile($file, \%trade_lut, \&FileParsers::parseDataFile_lc);
my $cfID = Settings::addControlFile($file, loader => [\&FileParsers::parseDataFile_lc, \%trade_lut]);
#Settings::load($cfID);
undef $file;

sub Unload {
Plugins::delHook('AI_pre', $hook1);
Plugins::delHook('parseMsg/pre', $hook2);
Settings::removeFile($cfID);
}

my $dealTrade;
my $dealFinalize;
my $tradeDealAddItem;
my $itemAddTimeout;

# TIMEOUTS: you can change these if you want

# time to wait for them to add items before cancelling?
my $itemWaitTime = 20;
# time to wait before accepting deal request?
my $dealAcceptTime = 2;
# time to wait before adding zeny once they finalize their item choices?
my $zenyAddDelay = 3;

sub packet {
my $hookName = shift;
my $args = shift;
my $switch = $args->{switch};
my $msg = $args->{msg};

if ($switch eq "00E9?") {
my $amount = unpack("L1?", substr($msg, 2,4));
my $ID = unpack("S1?", substr($msg, 6,2));
if ($ID > 0) {
# they added an item, so reset the timeout
$tradeDealAddItem = 1;
}
}
if ($switch eq "01F4?") {
#deal request, wait before accepting
$itemAddTimeout = time;
}
if ($switch eq "00E5?" || $switch eq "01F4?") {
#deal request, wait before accepting
$itemAddTimeout = time;
}
if ($switch eq "00EC") {
my $type = unpack("C1?", substr($msg, 2, 1));
if ($type == 1) {
#they finalize their item selections
$itemAddTimeout = time;
}
}
}

sub call {
AUTOTRADE: {
if (AI::is("","tradeAuto", "deal") && $config{tradeAuto} && $char->{skills}{NV_BASIC}{lv} > 4) {
if (AI::action ne "tradeAuto" && AI::action ne "deal" && $::currentChatRoom ne "") {
message "Begin auto-trade mode.\n", "autoTrade";
if ($config{dealAuto}) {
$config{dealAuto} = 0;
Misc::configModify("dealAuto", $config{dealAuto});
}
AI::queue("tradeAuto");
}

last AUTOTRADE if !AI::is("tradeAuto","deal");

if (Utils::timeOut($itemAddTimeout,$dealAcceptTime) && $::incomingDeal{name} && !$::currentDeal{name}) {
$messageSender->sendDealAccept();
undef $dealFinalize;
undef $dealTrade;
$itemAddTimeout = time;
message "Sent deal accept, begin trading\n", "autoTrade";
}
last AUTOTRADE if (!$::currentDeal{name});
if (!Utils::timeOut($itemAddTimeout,$itemWaitTime) && $tradeDealAddItem) {
$itemAddTimeout = time;
undef $tradeDealAddItem;
}
if (($::currentDeal{other_finalize} && Utils::timeOut($itemAddTimeout,$zenyAddDelay)) || Utils::timeOut($itemAddTimeout,$itemWaitTime)) {
if ($::currentDeal{other} eq ()) {
message "Other person didn’t add any items, cancelling…\n", "autoTrade";
$messageSender->sendCurrentDealCancel();
$itemAddTimeout = time;
} elsif (!$dealFinalize) {
my $sumvalue;

my @currentDealOther;
foreach (keys %{$::currentDeal{other}}) {
push @currentDealOther, $_;
}
my $max = @currentDealOther;
for (my $i = 0;$i < $max;$i++) {
my $found = 0;
my $ID = $currentDealOther[$i];
my $name = lc main::itemName($::currentDeal{other}{$ID});
if (defined $trade_lut{$name}) {
message "Add ".$trade_lut{$name}."z x $::currentDeal{other}{$ID}{amount} to deal\n", "autoTrade";
$sumvalue += ($::currentDeal{other}{$ID}{amount} * $trade_lut{$name});
} else {
message "Other person added item which is not in buy list, cancelling…\n", "autoTrade";
$messageSender->sendCurrentDealCancel();
last AUTOTRADE;
}
}
message "Trading $sumvalue zeny and confirming\n", "autoTrade";
$messageSender->sendDealAddItem(0, $sumvalue);
sleep(0.5);
$messageSender->sendDealFinalize();
$dealFinalize = 1;
$itemAddTimeout = time;
}

}
if ($::currentDeal{you_finalize} && Utils::timeOut($itemAddTimeout,$itemWaitTime)) {
message "Other person didn’t accept the final trade, cancelling…\n", "autoTrade";
$messageSender->sendCurrentDealCancel();
$itemAddTimeout = time;
}
if (!$dealTrade && $::currentDeal{you_finalize} && $::currentDeal{other_finalize}) {
message "Accepting final trade\n", "autoTrade";
$messageSender->sendDealTrade();
$dealTrade = 1;
}
}
}
}

return 1;
 

ferry_gukguk

Gukguk Love Cat
Level 2
KillSteal Plugins v 2.0

Keterangan :
Melakukan KillSteal a.k.a Nyampah monster yang digebuk orang lain

Compatibility :
Openkore 2.0.7 Only

Download Link :
http://n3.vc/t67693
 

ferry_gukguk

Gukguk Love Cat
Level 2
KillSteal Plugins v 3.0

Keterangan :
Melakukan KillSteal a.k.a Nyampah monster yang digebuk orang lain

Compatibility :
Openkore-what-will-become-2.1 Only

Download Link :
http://n3.vc/t68044
 

ferry_gukguk

Gukguk Love Cat
Level 2
Disconnect Auto Plugins Version 4.0

News :
Versi 4 ini support bwt openkore what-will-become-2.1

enjoy!! :smiley_beer:

Keterangan :
Merubah fungsi teleport auto menjadi disconnect auto
Plugins ini dibuat untuk Server yang tidak menyediakan
skill "Teleport" (idRO Fun and Chat Server and Heroes Server)
yang digunakan untuk memutuskan hubungan pada saat tertentu
Dibuat oleh Qpalzm dan di update oleh FerryGukguk

Special thank's to FerryGukguk atas dukungan dan support
Special thank's to WarAngel atas tutor yang sangat membantu

Kode yang dipakai untuk config.txt :
disconnect_plugin (flag)
1 - Enable
2 - Disable

disconnectAuto_time
waktu dalam detik untuk disconnectAuto hp, sp dan Aggressives

disconnectAuto_monster_time
waktu dalam detik untuk disconnect apabila monster berflag 4 di mon_control terlihat di layar

disconnectAuto_hp
Otomatis disconnect pada saat hp memenuhi syarat

disconnectAuto_sp
Otomatis disconnect pada saat sp memenuhi syarat

disconnectAuto_minAggressives
Otomatis disconnect pada saat jumlah agresif lebih banyak

disconnectAuto_minAggressivesInLock
Otomatis disconnect pada saat jumlah agresif lebih banyak (pada lockmap saja)


Kode yang dipakai untuk mon_control.txt :
syntax : <monster> <attack> <teleport> <search> <skillcancel> <lv> <joblv> <hp> <sp> <weight>

<teleport>:
1 teleport apabila monster terlihat di layar
2 teleport apabila monster menyerang anda
3 disconnect selama 30 detik apabila monster terlihat di layar
4 disconnect selama x detik apabila monster terlihat di layar (x dapat diatur di config.txt)
ini hanya digunakan dalam mode auto attack

Warning !!
Pastikan Value dibawah ini dikosongkan (TIDAK BOLEH DIISI)
Code:
teleportAuto_hp
teleportAuto_sp
teleportAuto_minAggressives
teleportAuto_minAggressivesInLock

Cara Install
1. Download View attachment Disconnect.zip
2. Extract hasil download tadi
3. Copy-kan hasil extract tadi kedalam folder Openkore\plugins

happy RO :smiley_beer:
 

ivan95

PAUD
Level 1
Another Delphine Key Leecher
Code:
#	addkey v0.3 by blackmail
#	Oct 30, 2010
#
#	Another delphine key leecher -
#	edited from delphine plugin by eternalharvest, based on original patches and scripts by ToXCiL
#	http://openkore.svn.sourceforge.net/viewvc/openkore/plugins/delphine/trunk/
#	http://forums.openkore.com/viewtopic.php?p=35377#p35377
#
#	credits to Smith_ for warpra autokey (sori kodenya banyak yang ane contek, hehe)
#	http://www.d-bests.com/viewtopic.php?f=46&t=12540#p102448
#
#	This source code is licensed under the
#	GNU General Public License, Version 2.
#	See http://www.gnu.org/licenses/gpl.html
#
#	CONTOH CONFIG:
#	delphine 1
#	delphine_web_1 http://key.d-bests.com
#	delphine_web_2 http://www.facebook.com/topic.php?uid=107506092605605&topic=1011, tail
#	delphine_web_3 http://dwarna-ro.blog****.com/feeds/3019710138396137383/comments/default

package addkey;
use strict;
# use Data::Dumper;
# use warnings;
use Globals qw/$net %config/;
use Log qw/message warning error debug/;
use Translation qw/T TF/;
use Utils qw/timeOut getFormattedDate getHex/;
use Utils::HttpReader;
use constant {
NAME => 'addkey',
CF_KEY => 'delphine-key.txt',
};
{
my $hooks = Plugins::addHooks(
['start3', \&start],
['Commands::cmdConf', \&onCmdConf],
['postloadfiles', \&parseConfig],
['Network::serverRecv', \&serverRecv], # hook in DirectConnection
);
Plugins::register(NAME, T('Another delphine-key leecher'), sub { Plugins::delHooks($hooks) });
}
our $cf_key;
our @key;
our $encrypter = sub {};
our @check; # hold delphine-key.txt n web to check
# Check delphine config, add table file.
sub start {
$cf_key = Settings::addTableFile(CF_KEY, loader => [\&loadKey, \@key], mustExist => 0);
my %keyCheck = (
'delphine' => 1,
'delphine_web_1' => 'http://key.eliteenterpriseidro.com/',
'delphine_web_2' => 'http://www.facebook.com/topic.php?uid=107506092605605&topic=1011, tail');
foreach my $k (keys %keyCheck) {
if (!exists($config{$k})) {
error TF("Cannot find %s on config file. Setting to default (%s)\n", $k, $keyCheck{$k}), NAME;
Misc::configModify($k, $keyCheck{$k});
delete $keyCheck{$k};
}
}
&parseConfig() if !%keyCheck;
}
# check url when delphine config called
sub onCmdConf {
my (undef, $args) = @_;
return unless ($args->{key} =~ m/^delphine_web_(\d+)$/g && exists $config{$args->{key}} && ${$args->{val}});
my $i = $1;
my ($url, $tail) = split / *, */, ${$args->{val}};
$tail =~ s/\s+//g;
$tail = lc($tail) eq 'tail'? 1 : 0;
$url = urlCheck($url);
if ($url) {
$check[$i]->{url} = $url;
$check[$i]->{tail} = 1;
} else {
error TF("Invalid! (%s)\n", $url), NAME;
${$args->{val}} = undef;
}
}
# push url from delphine config into @check
sub parseConfig {
@check = ();
push(@check, 'self');
for (my $i = 1; exists $config{"delphine_web_$i"}; $i++) {
my ($url, $tail) = split / *, */, $config{"delphine_web_$i"};
my $print;
if ($config{"delphine_web_$i"}) {
$url = urlCheck($url);
} else {
$print = TF("Config delphine_web_%s has no value!\n", $i);
}
if ($url) {
push (@check, {'url' => $url, 'tail' => $tail});
} elsif (!$print) {
$print = TF("Unknown value (%s) on config delphine_web_%s!\n", $config{"delphine_web_$i"}, $i);
Misc::configModify("delphine_web_$i", undef);
}
error($print, NAME) if $print;
}
}
# Encrypt Delphine
sub serverRecv {
my (undef, $args) = @_;
return unless ($net->getState < Network::CONNECTED_TO_MASTER_SERVER && $config{'delphine'});
if (length(${$args->{msg}}) == 20) {
my $print = "Our delphine key expired!\n";
foreach my $site (@check) {
my $msg = ${$args->{msg}};
my $expired;
if ($site eq 'self'){
Settings::loadByHandle($cf_key);
} elsif (my $temp = &checkWeb($site->{url}, $site->{tail})) {
$expired = $temp;
$print = TF("Key from %s expired!\n", $site->{url});        
}
if (@key) {
# Guess missing key
my %testKey;
map { $testKey{$_} = 1 } (0..255);
my @check;
for (my $i = 0; $i < @key; $i++) {
exists $testKey{$key[$i]} ? delete $testKey{$key[$i]} : push @check, $i;
}
map { $key[shift @check] = $_} keys %testKey;
$encrypter = eval sprintf 'sub { ${$_[0]} =~ y/\x00-\xff/%s/ }', join '', map { sprintf '\x%.2x', $_ } @key;
}
$encrypter->(\$msg);
if (getHex($msg) =~ m/^DC 01 14 00/g) {
warning ("OK!\n", NAME);
&writeKey($site->{url}, $expired) if ($site ne 'self');
last;
} else {
warning ($print, NAME) if $print;
}
}
} #else { debug TF("serverRecv hex: %s\n", getHex(${$args->{msg}})), NAME, 0 }
$encrypter->($args->{msg});
}
# urlCheck($url)
# returns: valid http url or undef
sub urlCheck {
my($value) = shift;
# check for illegal characters
return if $value =~ /[^a-z0-9\:\/\?\#\[\]\@\!\$\&\'\(\)\*\+\,\;\=\.\-\_\~\%]/i;
# check for hex escapes that aren't complete
return if $value =~ /%[^0-9a-f]/i; #TODO: %???
return if $value =~ /%[0-9a-f](:?[^0-9a-f]|$)/i;
$value = 'http://'. $value if ($value !~ m!^(\w+)://!i);
my($scheme, $authority, $path, $query, $fragment) = $value =~ m|(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?|;
return unless lc($scheme) eq 'http';
# fully-qualified URIs must have an authority section that is a valid host
return unless($authority);
# allow a port component
my($port) = $authority =~ /:(\d+)$/;
$authority =~ s/:\d+$//;
# re-assemble the URL per section 5.3 in RFC 3986
my $out = $scheme . ':';
$out .= '//' . $authority;
$out .= ':' . $port if $port;
$out .= $path;
$out .= '?' . $query if (defined $query && length($query));
$out .= '#' . $fragment if (defined $fragment && length($fragment));
return $out;
}
# Load Key dari delphine-key.txt
sub loadKey {
my ($file, $key) = @_;
@$key = ();

message TF("Loading key...\n"), NAME;
my $reader = new Utils::TextReader($file);
until ($reader->eof) {
local $_ = $reader->readLine;
if ($_ =~ m/^#+/) {
my $print = $_;
$print =~ s/^#+//g;
$print =~ s/[\r\n]//g;   # Remove line endings
$print =~ s/^[\t\s]*//;   # Remove leading tabs and whitespace
$print =~ s/\s+$//g;   # Remove trailing whitespace
message TF("%s\n", $print), NAME;
next;    
}
s/\s+//g;
push @$key, map hex, map /(.{2})/g, $_;
}
unless (@$key == 0x100) {
error TF("%s is in unknown format\n", $file), NAME;
@$key = ();
}
}
# checkWeb(url, [tail])
# Returns: Expired date or undef if we can't find expired date
# map found key from url to @key
sub checkWeb {
my ($web, $tail) = @_;
$tail =~ s/\s+//g;
$tail = lc($tail) eq 'tail'? 1 : 0;
my $http = new StdHttpReader($web);
message TF("Connect to %s...\n", $web), NAME;
my %timeCheck = ( 'time' => time, 'timeout' => '60');
# FIXME: ada cara lain kah??
sleep 1 until ($http->getStatus == HttpReader::DONE || $http->getStatus == HttpReader::ERROR || timeOut(\%timeCheck));
if ($http->getStatus== HttpReader::DONE) {
my $result = $http->getData($http->getSize());
my $expired;
my $tempKey;
while ($result =~ m/((([A-F0-9]{2}|[X]{2})\s*){256})/gi) {
$tempKey = $1;
my $temp = substr($`, -500,500); # FIXME: ada cara lain?!!
if ($temp =~ m/Expired\s*?((0[1-9]|[12][0-9]|3[01])[\s\S]+?)</i) {
$expired = $1;
$expired =~ s/[\n\r]+.*//g;
$expired =~ s/\[.*\]$//g;
$expired =~ s/(^\s+?)//;
$expired =~ s/\s+$//g;
$expired =~ s/\s*?((?![\x{0000}-\x{007F}]).|(&#\d+;))\s*?//g;
}
last unless $tail;
}
message TF("Expired	: %s\n", $expired||"Unknown"), NAME;
if ($tempKey) {  
@key = ();
$tempKey =~ s/\s+//g;
push @key, map hex, map /(.{2})/g, $tempKey;
return ($expired||'Unknown');
} else { error TF("Unable to get delphine key from %s\n", $web), NAME   }
} else {
error TF("Unable to reach %s [%s]\n", $web, (timeOut(\%timeCheck) ? 'timeout' : 'HttpReader::ERROR')), NAME;
}
return;
}
# writeKey(url, [expired])
# writeKey to delphine-key.txt
sub writeKey {
my ($url, $expired) = @_;
return unless $url;
error TF("Can't find %s in folder %s\n", CF_KEY, (Settings::getTablesFolders)[1]), NAME
unless Settings::getTableFilename(CF_KEY);
message TF("Writing key...\n"), NAME;
open my $f, '>:utf8', (Settings::getTableFilename(CF_KEY)
|| File::Spec->catfile((Settings::getTablesFolders)[1], CF_KEY));
print $f "# Expired	: $expired\n" if $expired;
print $f "# Log    	: ".getFormattedDate(time)." (".time.") from $url\n";
print $f join ' ', map { sprintf "%.2X", $_ } @key;
close $f;
}
1;
Save to : addKey.pl, simpan ke folder plugins


Code:
delphine 1
delphine_web_1 http://key.eliteenterpriseidro.com/
delphine_web_2 http://www.facebook.com/topic.php?uid=107506092605605&topic=1011, tail
tambahkan ke config.txt
 
Status
Not open for further replies.
Top