Nmap Development mailing list archives
Re: payload file prototype
From: Jay Fink <jay.fink () gmail com>
Date: Thu, 18 Feb 2010 12:43:25 -0500
On Mon, Feb 15, 2010 at 9:49 PM, David Fifield <david () bamsoftware com> wrote:
I don't know what you mean by the bare value and a loop. You might have to do some things like defining operator< on proto_port to make it fit the interface of std::map. Once you've done that, lookup is something like std::map<struct proto_port, struct payload>::iterator it; it = Payload.find(tmp_proto_port); if (it == Payload.end()) return NULL; else return &*it;
voila - some test stuff I put together last night and beat upon at
lunch today, the only issue I have right now is *getting* the payload
back but I'm sure I'll figure it out - once that is done it becomes
the plug and chug of initializing the global map, note I cut out
includes and any gunk for readability:
using namespace std;
void fake_payload(void); // temporary til init is done
void find_payload (u8 proto, u16 dport);
static std::map<struct proto_dport, char *> payload;
static int pairmatch = 0;
struct proto_dport {
u8 proto;
u16 dport;
/* Compares one protocol/destination port pair and returns result */
bool operator<(const struct proto_dport &other) const {
if (proto == other.proto)
if (dport == other.dport) pairmatch = 1;
}
};
void fake_payload (void) {
struct proto_dport pp;
static char example[] = "\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00";
pp.proto = 17;
pp.dport = 53;
payload[pp] = example;
}
void find_payload (u8 proto, u16 dport) {
std::map<struct proto_dport, char *>::iterator it;
char payload_string[4096];
struct proto_dport pp;
pp.proto = proto;
pp.dport = dport;
it = payload.find(pp);
if (pairmatch == 1)
printf("Match found\n");
}
/* XXX Wrapper test stuff */
const char *get_udp_payload(u16 dport, size_t *length) {
find_payload(17, dport); /* 17 is UDP */
return "nada for now";
}
int main(int argc, char **argv) {
const char *payload;
size_t payload_length;
u8 dport = 0;
if (argv[1]) dport = atoi(argv[1]);
fake_payload(); /* Load up a fake payload */
payload = get_udp_payload(dport, &payload_length);
return 0;
}
_______________________________________________
Sent through the nmap-dev mailing list
http://cgi.insecure.org/mailman/listinfo/nmap-dev
Archived at http://seclists.org/nmap-dev/
Current thread:
- Re: payload file prototype, (continued)
- Re: payload file prototype David Fifield (Feb 01)
- Re: payload file prototype Jay Fink (Feb 01)
- Re: payload file prototype Jay Fink (Feb 04)
- Re: payload file prototype David Fifield (Feb 09)
- Re: payload file prototype Jay Fink (Feb 11)
- Re: payload file prototype David Fifield (Feb 12)
- Re: payload file prototype Jay Fink (Feb 12)
- Re: payload file prototype Jay Fink (Feb 14)
- Re: payload file prototype David Fifield (Feb 15)
- Re: payload file prototype Jay Fink (Feb 16)
- Re: payload file prototype Jay Fink (Feb 18)
- Re: payload file prototype David Fifield (Feb 19)
- Re: payload file prototype Jay Fink (Feb 11)
