Clan x86

Technical (Development, Security, etc.) => General Programming => Botdev => Topic started by: igimo1 on May 23, 2006, 08:13:28 pm

Title: [Python] Packetbuffer
Post by: igimo1 on May 23, 2006, 08:13:28 pm
Quote
#packet buffer

__author__ = 'topaz'
__copyright = 'BSD License'

import string
import struct
import main

class pBuffer:

    def __init__(self):
        self.buffer = list()
        #declares self.buffer as a list
   
    def insertData(self, data):
        self.buffer.append(data)

    def insertInteger(self, data):
        if string.isdigit(data) == false:
            return
        else:
            data = struct.pack('I', data)
                #converts data into unsigned int and adds it into the buffer
                #converting integers into dwords/words is unnecessary, so we
                #simply pack it and append it
            self.buffer.append(data)

    def insertIntegerList(self, data):
        if string.isdigit(data) == false:
            return
        else:
            self.buffer.append('%s' %data)
            #adds a list of integers into the buffer

    def insertString(self, data):
        self.buffer.append(data)

    def insertNTString(self, data):
        self.buffer.append('%s.' % data)
        #adds string into buffer with a null terminator

    def makeInteger(self, data):
        data = struct.pack('I', data)

        return data
   
    def strToHex(self, data):
        data = data.encode('hex')

        return data
       
    def makeLong(self, data):
        data = struct.pack('L', data)
        #convert data into a Long and return it

        return data
   
    def hexToStr(self, data):
        data = data.decode('hex')
        #decodes data back into string and returns it

        return data

    def GetDWORD(self, data):
        #transform data into an integer and return it
        data = int(data)

        return data
       
    def GetWORD(self, data):
        data = int(data)

        return data

    def insertBYTE(self, data):
        data = Chr(data)
        #convert data into byte format and return it

        self.buffer.append(data)
   
    def sendPacket(self, packetID):
        main.transport.write(self.buffer)

        clear()

    def clear(self):
        #clears the buffer
        self.buffer[:] = []

Updated code.
Title: Re: [Python] Packetbuffer
Post by: GameSnake on May 24, 2006, 10:54:24 pm
I'm a Python developer. I tried this code out in the Python IDLE GUI along with a homemade structure code and it works suprisingly well.
Title: Re: [Python] Packetbuffer
Post by: Sidoh on May 24, 2006, 11:03:03 pm
I'm a Python developer. I tried this code out in the Python IDLE GUI along with a homemade structure code and it works suprisingly well.

It's . . . 200 lines, tops?  Unless you lack simple analsys skills, I don't see how it would be that surprising.

What did you mean by "surprising," anyway?  Are you being condescending? :P
Title: Re: [Python] Packetbuffer
Post by: Joe on May 24, 2006, 11:18:26 pm
I'd be interested in seeing a bot written in Python. I've never used the language - does it have a nice API including networking stuff as well, or is it more like Brainfuck where you have nothing at all?
Title: Re: [Python] Packetbuffer
Post by: GameSnake on May 24, 2006, 11:24:59 pm
I'd be interested in seeing a bot written in Python. I've never used the language - does it have a nice API including networking stuff as well?
Yes. Although a little outdated, Python is a simple yet powerfull language. If your interested, $t0rm has made a bot using Python before, the only problem is the GUI, you need another program that can interface python with a GUI.
I'm a Python developer. I tried this code out in the Python IDLE GUI along with a homemade structure code and it works suprisingly well.

It's . . . 200 lines, tops?  Unless you lack simple analsys skills, I don't see how it would be that surprising.

What did you mean by "surprising," anyway?  Are you being condescending? :P
Condecsending, you never know with Topaz, I was just confirming to everyone that the code does work ;). It is rare to find Python code in bot development
Title: Re: [Python] Packetbuffer
Post by: Sidoh on May 24, 2006, 11:44:30 pm
Condecsending, you never know with Topaz, I was just confirming to everyone that the code does work ;). It is rare to find Python code in bot development

Your response either convoluted or nonsensical. :P
Title: Re: [Python] Packetbuffer
Post by: Sidoh on May 25, 2006, 12:05:43 am
This is cool,

anyone ever done a bot in python or something like that? i'd be interested in learning it

Yes. Although a little outdated, Python is a simple yet powerfull language. If your interested, $t0rm has made a bot using Python before, the only problem is the GUI, you need another program that can interface python with a GUI.
Quote from: Sidoh link=topic=5956.msg70889#msg70889
[/quote

I'm pretty sure I know the storm he's talking about.  Is this the same one that uses coldfusion a lot and hates PHP?  I work for a guy he used to work for.
Title: Re: [Python] Packetbuffer
Post by: Joe on May 25, 2006, 11:49:05 pm
You have some fubared quote tags, Sidoh.

Linkage, GameSnake? I don't plan on using it, of course, but I thought I'd be interesting.
Title: Re: [Python] Packetbuffer
Post by: GameSnake on May 26, 2006, 02:20:50 pm
You have some fubared quote tags, Sidoh.

Linkage, GameSnake? I don't plan on using it, of course, but I thought I'd be interesting.
python.org
Title: Re: [Python] Packetbuffer
Post by: Joe on May 27, 2006, 01:17:01 pm
I meant his bot. =p
Title: Re: [Python] Packetbuffer
Post by: GameSnake on May 28, 2006, 12:32:03 am
I meant his bot. =p
Ask him for it.
Title: Re: [Python] Packetbuffer
Post by: Joe on May 29, 2006, 02:13:47 am
I don't know storm.
Title: Re: [Python] Packetbuffer
Post by: igimo1 on July 12, 2007, 11:50:52 pm
This code sucks, much more elegant if the code is geared towards a purpose, ie parsing incoming data;

Code: [Select]
import struct

def unpack_dword(data):
    return struct.unpack('I', data)[0]

def unpack_word(data):
    return struct.unpack('H', data)[0]

def unpack_byte(data):
    return struct.unpack('<B', data)[0]

class recv_buffer:
    def __init__(self, raw_buffer):
        self.raw_buffer = raw_buffer
        self.position = 0

    def jump(self, bytes):
        self.position += bytes

    def back(self, bytes):
        self.position -= bytes

    def set_position(self, position):
        self.position = position

    def next_string(self):
        pos = self.raw_buffer.find(chr(0), self.position)
        string = self.raw_buffer[self.position:pos]

        self.set_position(pos + 1)
        return string

    def next_byte(self):
        param = self.raw_buffer[self.position:self.position + 1]
        byte = unpack_byte(param)

        self.jump(1)
        return byte

    def next_dword(self):
        param = self.raw_buffer[self.position:self.position + 4]
        dword = unpack_dword(param)

        self.jump(4)
        return dword

    def next_word(self):
        param = self.raw_buffer[self.position:self.position + 2]
        word = unpack_word(param)

        self.jump(2)
        return word

    def next_dword_list(self, size):
        dword_list = []

        for i in xrange(size):
            dword_list.append(self.next_dword())

        return dword_list

    def next_data(self, bytes):
        return self.raw_buffer[self.position: self.position + bytes]

    def dump_data(self):
        self.raw_buffer = ""

Much shorter, too, unlike the code from a good year ago

I'd be interested in seeing a bot written in Python. I've never used the language - does it have a nice API including networking stuff as well, or is it more like Brainfuck where you have nothing at all?

Python is very easy to learn (I've seen users dub it "visual basic 2", or some other clever nick). The stdlib is huge, much like Java's. There is a significant amount of networking modules built-in.

The bot has been available for some time (http://www.advancedcontent.net/topaz/code/pythonbot/). I ran into some phantom bugs while I was working on it, but it has enough done that it should be easily completed. In fact, some leech even thought it complete enough to use and plaster his name on it without giving credit (http://code.google.com/p/python-bot).
Title: Re: [Python] Packetbuffer
Post by: warz on July 13, 2007, 02:59:36 am
Python is not even comparable to Brainfuck - who asks that?

topaz, continue searching for slaughter.. maybe check our irc network again - wait, you can't roflmaomfommaomrfolol
Title: Re: [Python] Packetbuffer
Post by: igimo1 on July 13, 2007, 03:26:47 am
Are you sure?
Title: Re: [Python] Packetbuffer
Post by: warz on July 13, 2007, 03:28:04 pm
Are you sure?

lorloflromaoroflamololmaomalhaha
Title: Re: [Python] Packetbuffer
Post by: Warrior on July 13, 2007, 10:55:36 pm
So..someone leached your code and licensed it under GPLv2? Fucking FSF
Title: Re: [Python] Packetbuffer
Post by: igimo1 on July 13, 2007, 11:13:01 pm
So..someone leached your code and licensed it under GPLv2? Fucking FSF

This is correct - the dummy even left a couple lines that indicated the real author in the source. Sigh.
Title: Re: [Python] Packetbuffer
Post by: wires on July 13, 2007, 11:16:25 pm
So..someone leached your code and licensed it under GPLv2? Fucking FSF

This is correct - the dummy even left a couple lines that indicated the real author in the source. Sigh.
LOL
Title: Re: [Python] Packetbuffer
Post by: Warrior on July 14, 2007, 12:51:07 am
So..someone leached your code and licensed it under GPLv2? Fucking FSF

This is correct - the dummy even left a couple lines that indicated the real author in the source. Sigh.

Fairly certain you can complain to google to have it taken down.
Title: Re: [Python] Packetbuffer
Post by: Camel on September 04, 2007, 12:59:43 pm
Python is not even comparable to Brainfuck - who asks that?

topaz, continue searching for slaughter.. maybe check our irc network again - wait, you can't roflmaomfommaomrfolol

Code: [Select]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++.-.+.-------.+++++++++++++.------------------
-----------------------------------------------------------.------------.+++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+.-
-------------.+++++++++++++++.--------------------------------------------------
-----------------------------------.++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++.+..-------------.
Title: Re: [Python] Packetbuffer
Post by: Explicit on September 04, 2007, 09:09:45 pm
Python is not even comparable to Brainfuck - who asks that?

topaz, continue searching for slaughter.. maybe check our irc network again - wait, you can't roflmaomfommaomrfolol

Code: [Select]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++.-.+.-------.+++++++++++++.------------------
-----------------------------------------------------------.------------.+++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+.-
-------------.+++++++++++++++.--------------------------------------------------
-----------------------------------.++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++.+..-------------.

It takes forever to even get a "Hello, world!" application compiled and running with BF, that is, if you're actually attempting to write it yourself.  :P
Title: Re: [Python] Packetbuffer
Post by: Sidoh on September 04, 2007, 11:12:31 pm
I just don't understand why anyone uses anything other than LOLCODE.  I mean, seriously, who doesn't like to giggle at internets memes while they're programming?
Title: Re: [Python] Packetbuffer
Post by: Camel on September 05, 2007, 09:53:59 am
So..someone leached your code and licensed it under GPLv2? Fucking FSF

This is correct - the dummy even left a couple lines that indicated the real author in the source. Sigh.

Fairly certain you can complain to google to have it taken down.

I'm fairly certain a cease and desist would not be uncalled for. Complaining is easier though.

Then again, can you really take a project at SVN revision 7 seriously anyways?

It takes forever to even get a "Hello, world!" application compiled and running with BF, that is, if you're actually attempting to write it yourself.  :P

Are you serious? Writing a BF interpreter is easy. Writing a BF generator is easy too.

Code: [Select]
char b[MEMORY_SIZE];
char *p = &b;
int main() {
while(true) {
char c = getch();
if(c == EOF)
return 0;
switch(c) {
case '+': *p++; break;
case '-': *p--; break;
case '>': p++; break;
...
}
}
}

Here's the modified code from ABF I used to generate the above BF code. I'd have converted it to C, but that would have required reading that god awful C++ code, so I just left it in.
Code: [Select]
/*
 * Read string from standard input and convert to Brainfuck.
 */

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main(int argc, char** argv)
{
vector<string> stringvec;

for (string tmp; getline(cin, tmp);) {
stringvec.push_back(tmp);
}

int i = 0;
for (vector<string>::const_iterator oit = stringvec.begin();
oit != stringvec.end();
++oit) {
for (string::const_iterator iit = oit->begin();
iit != oit->end();
++iit) {
for (; i < *iit; ++i)
cout << "+";
for (; i > *iit; --i)
cout << "-";
cout << ".";
}
cout << endl;
}
}
Title: Re: [Python] Packetbuffer
Post by: iago on September 05, 2007, 10:18:43 am
I don't see a license on the source files, so there's no way you could force them to give credit. Next time, if you want credit, give it a BSD-style license.

Personally, I release code under an a public domain license, and I tell people who use it that they don't have to give me credit, but it's nice if they do.
Title: Re: [Python] Packetbuffer
Post by: Camel on September 05, 2007, 10:25:54 am
I use GPL v2 because it was the first option in the drop-down when I created the Google Code project.

Honestly, I've never even read it. I do know, however, that it's infectious. That is to say, if you use any GPLv2 code, the modules that include the GPLed code have to be released with the same license.

iago, what's the difference between the license you use and no license at all?
Title: Re: [Python] Packetbuffer
Post by: iago on September 05, 2007, 11:55:06 am
There is no difference, actually. Mine's just spelling out, clearly, that there is no license.
Title: Re: [Python] Packetbuffer
Post by: Camel on September 05, 2007, 01:00:45 pm
Then why, I must ask, don't you at least insist that you receive credit for your work? I'm completely in support of free OSS (open-source software), but when I say free I mean gratis, not libre. I believe that the majority of the people who use libre OSS and do not turn around and release their own software have an overall negative impact on the software community. There isn't any way to gauge this impact, so it's entirely a matter of opinion, but I can think of several examples that support my case.

The whole philosophy behind OSS is essentially communism -- that's bad for governments, but good for software; by contributing, you are making the software world a better place. By using free OSS, but not returning the favor, one is simply exploiting the system. It's embezzlement, plain and simple.


Discuss.
Title: Re: [Python] Packetbuffer
Post by: iago on September 05, 2007, 01:16:57 pm
Not communism, socialism. Communism was a special form of socialism that sucked it up.

Personally, the code I write is for my own use. I want something, so I write it. I figure that if other people want to benefit from what I write, let 'em. I don't care if they're individuals or corporations or whatever.

There are cases, like the Lockdown code, where I use a stricter license because I know that others will want to use it, and it was a significant amount of work. On Lockdown I used a BSD-style license.
Title: Re: [Python] Packetbuffer
Post by: Camel on September 05, 2007, 02:02:36 pm
I don't see how the distinction between communism and socialism applies to software. Explain?

I remember being asked to help someone debug a problem with their battle.net bot once. They send me a ZIP file with the source code inside of it. When I opened it, I was shocked to find that roughly half of the code inside was identical to the code in my bot - and it wasn't just the large amount of code I'd released to the public domain primarily on the vL forums and in other various places. Modules were not even renamed; often, I add comments with links and credits in my code, and those were all removed. There was no credit given to anyone; in fact, the owner claimed that the bot was a completely original work, from the ground up.

After I called him on it, he admitted that he had started from a barebones bot project, and modified it so that his name replaced the author - let's call him "(2xX)j0ke" to protect his identity. Way back in the day, j0ke and I were working on a project together, but it didn't last long. He kept a lot of the work I'd done, which was fine with me. The problem was that he turned around and handed it off without asking for my permission, or even acknowledging that I'd contributed.

It's infuriating to know that I spent years testing, debugging, and even learning how to do all of the things I'd done for that project, and that someone just passed it off without even a thought of where it came from. The worst part of all was that I'd contributed to what later became the first starcraft win bot.
Title: Re: [Python] Packetbuffer
Post by: iago on September 05, 2007, 02:20:24 pm
I'm not qualified to compare communism and socialism, but I've been assured by reliable sources that using the term "communism" for opensource is incorrect.

As for the rest, I personally wouldn't care. If c0ke, err, j0ke used my code without acknowledging me, it wouldn't matter. I encourage people to give credit, but I don't demand it. The way I see it, I wrote the code for my own purposes, and the fact that he's using it doesn't change that.

I suppose to find the reason, you have to look back to your motivations for writing the code in the first place. If you're like me, you're writing the code for your own personal use and you don't care past there. Some people write code as a way of getting respect, the whole "I can do this better than you!" attitude. I can think of a few people (mostly around vL forums) that fit into that 100%. Then there's the financial motivation, but I don't think that's common in the botdev community.

But out of those three motivations, I think most people are a mixture. I'm almost totally on the "personal use" thing, which is why I don't care if people use my work without credit.

At least, that's the way I see it. :)
Title: Re: [Python] Packetbuffer
Post by: Camel on September 05, 2007, 03:24:50 pm
It'd be different if I released the code in to the public domain, but it wasn't anything I'd intended to release. One of the driving factors for making my current bot open-source was that it encourages keeping the code clean. If I'd foreseen what happened, I would have paid more attention to details, so at least the people receiving the stolen code would have a chance of comprehending it.