|
|
|
Weaver
|
Posted:
Sat Feb 22, 2003 11:56 pm |
|
|
|
Respected Member of PROnetworks
Joined: 18 Jun 2002
Posts: 2587
Location: /home/weaver/
|
|
Back during the move to the new equipment, does anyone remember when the stat for "Hits during downtime" jumped over from about 3500 to over ten thousand over the course of an hour...
Figured I would fess up.
(I was bored at work.)
-Weaver
|
|
|
|
|
|
|
|
Back to top
|
|
|
|
SCJwl
|
Posted:
Sat Feb 22, 2003 11:57 pm |
|
|
|
Respected Member of PROnetworks
Joined: 11 Mar 2002
Posts: 13440
Location: South Carolina
|
 LMAO
|
|
|
|
|
|
|
|
Back to top
|
|
|
|
kanaloa
John C. Derrick |
Posted:
Sun Feb 23, 2003 12:15 am |
|
|
|
Founder
Joined: 09 Mar 2002
Posts: 43385
Location: Columbia, SC
|
|
|
Back to top
|
|
|
|
Weaver
|
Posted:
Sun Feb 23, 2003 12:30 pm |
|
|
|
Respected Member of PROnetworks
Joined: 18 Jun 2002
Posts: 2587
Location: /home/weaver/
|
|
Let's just say the F5 key doesn't work on my keyboard at work anymore...
I am kidding. I would never refresh a page 7000 times like that. If I tell you how I did it...you may not think it is so funny anymore...you may find out that I am a real dork, and put almost a half hour into figuring out how to do it.
I actually had to learn a new "language" to do it (Bash scripting).
Let me know if you want me to tell you. It's not that difficult.
-Weaver
|
|
|
|
|
|
|
|
Back to top
|
|
|
|
lilwip
|
Posted:
Sun Feb 23, 2003 12:53 pm |
|
|
|
Respected Member of PROnetworks
Joined: 08 Aug 2002
Posts: 2790
Location: Independence, Missouri
|
|
LMAO Weaver, Good thing the site wasn't up... Nice little DOS attack... hahaha
How hard was bash scripting to learn. I am still learning the basics of linux, but eventually hope to have it all figured out...
|
|
|
|
|
|
|
|
Back to top
|
|
|
|
Weaver
|
Posted:
Sun Feb 23, 2003 1:19 pm |
|
|
|
Respected Member of PROnetworks
Joined: 18 Jun 2002
Posts: 2587
Location: /home/weaver/
|
Bash scripting was not too bad. I shouldn't talk, I just learned the basics of it in about 10 minutes. If you have experience with other programming languages, you will be both better off and confused. The programming semantics help, but the syntax of a bash script is just plain wicked. Loops are just plain weird, but as I later learned, in this sort of scripting language, it is better done that way. This isn't C++, it is a shell scripting language. You can learn the basics in 10 minutes or so, then experiment for a while getting the darn things to execute properly.
My script was pretty simple, even though it took me 10 minutes to write. I used a little program called Netcat, netcat (nc) is a TCP/IP swiss army knife. Believe me, it lives up to that verbage.
I started off by looking at the source code to page that was displayed. There wasn't really much there. I started making simple GET requests for the page from a command line. This did not increment the counter at all. I went back to the source and took a look at one more thing...
Note: A GET request is part of the HTTP protocol, it the method used to request resources such as HTML and Images.
| Code: |
| <img src=http://counter.digits.com/wc/-d/4/MovingPROneT> |
So I made a GET request for the image "MovingPROneT" from the command line and then looked at the page, the counter jumped up two. One for the get request from command line, and one for me refreshing the page. I figured I would try it a couple more times just to be sure. Sure enough, that was it. Now I just had to write a script to make a bunch of GET requests for that image. This is where the Bash scripting came in.
Well, here is the script, any advanced Bash scripters would probably rip me a new one. But hey, I am noob when it comes to bash scripting, so chill.
| Code: |
#!/bin/bash
count=1000
i=0
while [ "$i" -lt "$count" ]
do
echo -e "GET /wc/-d/4/MovingPROneT HTTP/1.0 \n\n" | nc counter.digits.com 80
let i+=1
done
exit 0
|
That's it.
Let's go through it a step at a time.
This just tells the shell (Bash) that when executing this, make sure to use bash. There are other types of scripting, such as C Shell (csh) among others.
This sets up our two variables, "count" and "i". I could have named them whatever I want. "count" is basically how many times the image will be requested. "i" is how many times the site has been requested. More on this later.
| Code: |
| while [ "$i" -lt "$count" ] |
While "i" is less than "count"
| Code: |
do
echo -e "GET /wc/-d/4/MovingPROneT HTTP/1.0 \n\n" | nc counter.digits.com 80
let i+=1
done
|
Do the following: Open a connection (using netcat) to counter.digits.com on port 80 (The HTTP port) and request (GET) the resource "/wc/-d/4/MovingPROneT". When you are done doing that, increment "i" by one and start the loop again.
Exit with error code 0 (No errors).
That was it, hopefully I only confused 75 percent or so. I then ran the script a couple of times, each time it would make a thousand requests for that image, one at a time of course, thus incrementing the counter.
-Weaver
|
|
|
|
|
|
|
|
Back to top
|
|
|
|
lilwip
|
Posted:
Sun Feb 23, 2003 1:59 pm |
|
|
|
Respected Member of PROnetworks
Joined: 08 Aug 2002
Posts: 2790
Location: Independence, Missouri
|
ROCK ON.... That actually doesn't look too bad at all... it is real similar to basic...
Have you seen this evolution of a programmer?
High School/Jr.High
| Code: |
10 PRINT "HELLO WORLD"
20 END |
First year in College
| Code: |
program Hello(input, output)
begin
writeln('Hello World')
end. |
Senior year in College
| Code: |
(defun hello
(print
(cons 'Hello (list 'World)))) |
New professional
| Code: |
#include <stdio.h>
void main(void)
{
char *message[] = {"Hello ", "World"};
int i;
for(i = 0; i < 2; ++i)
printf("%s", message[i]);
printf("\n");
} |
Seasoned professional
| Code: |
#include <iostream.h>
#include <string.h>
class string
{
private:
int size;
char *ptr;
public:
string() : size(0), ptr(new char('\0')) {}
string(const string &s) : size(s.size)
{
ptr = new char[size + 1];
strcpy(ptr, s.ptr);
}
~string()
{
delete [] ptr;
}
friend ostream &operator <<(ostream &, const string &);
string &operator=(const char *);
};
ostream &operator<<(ostream &stream, const string &s)
{
return(stream << s.ptr);
}
string &string::operator=(const char *chrs)
{
if (this != &chrs)
{
delete [] ptr;
size = strlen(chrs);
ptr = new char[size + 1];
strcpy(ptr, chrs);
}
return(*this);
}
int main()
{
string str;
str = "Hello World";
cout << str << endl;
return(0);
} |
Master Programmer
| Code: |
[
uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
]
library LHello
{
// bring in the master library
importlib("actimp.tlb");
importlib("actexp.tlb");
// bring in my interfaces
#include "pshlo.idl"
[
uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
]
cotype THello
{
interface IHello;
interface IPersistFile;
};
};
[
exe,
uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
]
module CHelloLib
{
// some code related header files
importheader(<windows.h>);
importheader(<ole2.h>);
importheader(<except.hxx>);
importheader("pshlo.h");
importheader("shlo.hxx");
importheader("mycls.hxx");
// needed typelibs
importlib("actimp.tlb");
importlib("actexp.tlb");
importlib("thlo.tlb");
[
uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
aggregatable
]
coclass CHello
{
cotype THello;
};
};
#include "ipfix.hxx"
extern HANDLE hEvent;
class CHello : public CHelloBase
{
public:
IPFIX(CLSID_CHello);
CHello(IUnknown *pUnk);
~CHello();
HRESULT __stdcall PrintSz(LPWSTR pwszString);
private:
static int cObjRef;
};
#include <windows.h>
#include <ole2.h>
#include <stdio.h>
#include <stdlib.h>
#include "thlo.h"
#include "pshlo.h"
#include "shlo.hxx"
#include "mycls.hxx"
int CHello::cObjRef = 0;
CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
{
cObjRef++;
return;
}
HRESULT __stdcall CHello::PrintSz(LPWSTR pwszString)
{
printf("%ws\n", pwszString);
return(ResultFromScode(S_OK));
}
CHello::~CHello(void)
{
// when the object count goes to zero, stop the server
cObjRef--;
if( cObjRef == 0 )
PulseEvent(hEvent);
return;
}
#include <windows.h>
#include <ole2.h>
#include "pshlo.h"
#include "shlo.hxx"
#include "mycls.hxx"
HANDLE hEvent;
int _cdecl main(
int argc,
char * argv[]
) {
ULONG ulRef;
DWORD dwRegistration;
CHelloCF *pCF = new CHelloCF();
hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
// Initialize the OLE libraries
CoInitializeEx(NULL, COINIT_MULTITHREADED);
CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,
REGCLS_MULTIPLEUSE, &dwRegistration);
// wait on an event to stop
WaitForSingleObject(hEvent, INFINITE);
// revoke and release the class object
CoRevokeClassObject(dwRegistration);
ulRef = pCF->Release();
// Tell OLE we are going away.
CoUninitialize();
return(0);
}
extern CLSID CLSID_CHello;
extern UUID LIBID_CHelloLib;
CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820
*/
0x2573F891,
0xCFEE,
0x101A,
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};
UUID LIBID_CHelloLib = { /*
2573F890-CFEE-101A-9A9F-00AA00342820 */
0x2573F890,
0xCFEE,
0x101A,
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};
#include <windows.h>
#include <ole2.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "pshlo.h"
#include "shlo.hxx"
#include "clsid.h"
int _cdecl main(
int argc,
char * argv[]
) {
HRESULT hRslt;
IHello *pHello;
ULONG ulCnt;
IMoniker * pmk;
WCHAR wcsT[_MAX_PATH];
WCHAR wcsPath[2 * _MAX_PATH];
// get object path
wcsPath[0] = '\0';
wcsT[0] = '\0';
if( argc > 1) {
mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
wcsupr(wcsPath);
}
else {
fprintf(stderr, "Object path must be specified\n");
return(1);
}
// get print string
if(argc > 2)
mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);
else
wcscpy(wcsT, L"Hello World");
printf("Linking to object %ws\n", wcsPath);
printf("Text String %ws\n", wcsT);
// Initialize the OLE libraries
hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);
if(SUCCEEDED(hRslt)) {
hRslt = CreateFileMoniker(wcsPath, &pmk);
if(SUCCEEDED(hRslt))
hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);
if(SUCCEEDED(hRslt)) {
// print a string out
pHello->PrintSz(wcsT);
Sleep(2000);
ulCnt = pHello->Release();
}
else
printf("Failure to connect, status: %lx", hRslt);
// Tell OLE we are going away.
CoUninitialize();
}
return(0);
} |
Apprentice Hacker
| Code: |
#!/usr/local/bin/perl
$msg="Hello, world.\n";
if ($#ARGV >= 0) {
while(defined($arg=shift(@ARGV))) {
$outfilename = $arg;
open(FILE, ">" . $outfilename) || die "Can't write $arg:
$!\n";
print (FILE $msg);
close(FILE) || die "Can't close $arg: $!\n";
}
} else {
print ($msg);
}
1; |
Experienced Hacker
| Code: |
#include <stdio.h>
#define S "Hello, World\n"
main(){exit(printf(S) == strlen(S) ? 0 : 1);} |
Seasoned Hacker
| Code: |
% cc -o a.out ~/src/misc/hw/hw.c
% a.out |
Guru Hacker
| Code: |
% cat
Hello, world.
^D |
New Manager
| Code: |
10 PRINT "HELLO WORLD"
20 END |
Middle Manager
| Code: |
mail -s "Hello, world." bob@b12
Bob, could you please write me a program that prints "Hello,
world."?
I need it by tomorrow.
^D |
Senior Manager
| Code: |
% zmail jim
I need a "Hello, world." program by this afternoon. |
Chief Executive
| Code: |
% letter
letter: Command not found.
% mail
To: ^X ^F ^C
% help mail
help: Command not found.
% d*mn!
!: Event unrecognized
% logout |
|
|
|
|
|
|
|
|
Back to top
|
|
|
|
Weaver
|
Posted:
Sun Feb 23, 2003 2:18 pm |
|
|
|
Respected Member of PROnetworks
Joined: 18 Jun 2002
Posts: 2587
Location: /home/weaver/
|
|
|
Back to top
|
|
|
|
kanaloa
John C. Derrick |
Posted:
Sun Feb 23, 2003 2:59 pm |
|
|
|
Founder
Joined: 09 Mar 2002
Posts: 43385
Location: Columbia, SC
|
|
Can we get one of these for say uhhh Top Sites?
LOL
|
|
|
|
|
|
|
|
Back to top
|
|
|
|
Xstream
|
Posted:
Sun Feb 23, 2003 10:56 pm |
|
|
|
Respected Member of PROnetworks
Joined: 14 Mar 2002
Posts: 12703
Location: USA
|
|
|
Back to top
|
|
|
|
|
Back to top |
|
|
|
|
|