Jump to content

florinu

Members
  • Posts

    13
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

florinu's Achievements

Newbie

Newbie (1/14)

4

Reputation

  1. Pentru un site video adult pornit de la 0 ce recomandati unde e bun de facut backlinkuri ceva idei exemple va rog daca se poate?
  2. c0dek da e wordpress . nu folosesc grabber le downloade de pe youporn si le pun pe videomega si apoi le fac iframe . cand zici 100 la ce te referi ca titlu cu descriere categorii si taguri sa ocupe maxim 100 de cuvinte ?
  3. c0dek asta e rezultatul http://s2.postimg.org/mgaln6kah/duplicate.jpg din 255 de pagini ca restu e paid . Ce imi recomanzi ?
  4. Imi poti recomanda c0dek o metoda cum gasesc duplicatele mai simplu ?
  5. http://s2.postimg.org/cysrgxrhl/spam.jpg oare o fi din cauza asta?
  6. efectiv nu mai stiu ce sa ii mai fac ... am postat si pe forum la google nimic nici un raspuns concret..
  7. Salutare am si eu o problema si numai nu ii dau de cap si ma gandeam ca ma puteti ajuta voi cu un sfat . Am site-ul Home - HD Porn Free Videos, live girls, all genres movies de vreo 6 luni . Nu mi-l indexeaza in google cum trebuie . Am plugginul Yoast sitemap instalat . Imi apar ca sunt indexate la sitemap 618 pe webmaster in realitate cand dai search pe google: site:hdporn.cc apar 230 . 23 de pagini . Pe webaster la google indexed apar 1290 . Care e problema . Am facut back-linkuri naturale pe diferite site-uri tot nu ma indexeaza . Am observat ca pe google raman 23 de pagini si tot imi schimba posturile mi le indexeaza pe ultimele si dispar cele anterioare dar tot 23 de pagini au ramas .
  8. Salutare detin siteu-ul hdporn.cc . E interesat careva de un banner exchange ceva ?
  9. da dar nu prea pricep .. in fine poat ajuta sursa pe altcineva si daca afla cum functioneaza poate posteaza si aici
  10. poate sa ne zica careva cum se scaneaza exact cu el ?
  11. #include "proto-http.h" #include "proto-banner1.h" #include "smack.h" #include "unusedparm.h" #include "string_s.h" #include "masscan-app.h" #include <ctype.h> #include <stdint.h> #include <stdlib.h> #include <string.h> enum { HTTPFIELD_INCOMPLETE, HTTPFIELD_SERVER, HTTPFIELD_CONTENT_LENGTH, HTTPFIELD_CONTENT_TYPE, HTTPFIELD_VIA, HTTPFIELD_LOCATION, HTTPFIELD_UNKNOWN, HTTPFIELD_NEWLINE, }; static struct Patterns http_fields[] = { {"Server:", 7, HTTPFIELD_SERVER, SMACK_ANCHOR_BEGIN}, //{"Content-Length:", 15, HTTPFIELD_CONTENT_LENGTH, SMACK_ANCHOR_BEGIN}, //{"Content-Type:", 13, HTTPFIELD_CONTENT_TYPE, SMACK_ANCHOR_BEGIN}, {"Via:", 4, HTTPFIELD_VIA, SMACK_ANCHOR_BEGIN}, {"Location:", 9, HTTPFIELD_LOCATION, SMACK_ANCHOR_BEGIN}, {":", 1, HTTPFIELD_UNKNOWN, 0}, {"\n", 1, HTTPFIELD_NEWLINE, 0}, {0,0,0,0} }; enum { HTML_INCOMPLETE, HTML_TITLE, HTML_UNKNOWN, }; static struct Patterns html_fields[] = { {"<TiTle", 6, HTML_TITLE, 0}, {0,0,0,0} }; extern struct ProtocolParserStream banner_http; /*************************************************************************** ***************************************************************************/ unsigned http_change_field(unsigned char **inout_header, unsigned header_length, const char *field_name, const unsigned char *field_value, unsigned field_value_len) { unsigned char *hdr1 = *inout_header; unsigned char *hdr2; unsigned i; unsigned is_newline_seen = 0; unsigned field_name_len = (unsigned)strlen(field_name); hdr2 = (unsigned char *)malloc(header_length + field_value_len + 1 + 2); memcpy(hdr2, hdr1, header_length); /* Remove the previous header and remember the location in the header * where it was located */ for (i=0; i<header_length; i++) { if (hdr2 == '\r') continue; if (hdr2 == '\n') { if (is_newline_seen) { /* We've reached the end of header without seing * the field. Therefore, create space right here * for it. */ while (hdr2[i-1] == '\r') i--; break; } else if (memcasecmp(&hdr2[i+1], field_name, field_name_len) == 0) { unsigned j; i++; /* skip previous newline */ for (j=i; j<header_length && hdr2[j] != '\n'; j++) ; if (j < header_length && hdr2[j] == '\n') j++; memmove( &hdr2, &hdr2[j], header_length - j); header_length -= (j - i); hdr2[header_length] = '\0'; break; } } } /* Insert the new header at this location */ memmove( &hdr2[i + field_name_len + field_value_len + 1 + 2], &hdr2, header_length - i); memcpy( &hdr2, field_name, field_name_len); memcpy( &hdr2[i + field_name_len], " ", 1); memcpy( &hdr2[i + field_name_len + 1], field_value, field_value_len); memcpy( &hdr2[i + field_name_len + 1 + field_value_len], "\r\n", 2); header_length += field_name_len + 1 + field_value_len + 2; free(hdr1); *inout_header = hdr2; return header_length; } /*************************************************************************** ***************************************************************************/ static const char http_hello[] = "GET / HTTP/1.0\r\n" "User-Agent: masscan/1.0 (https://github.com/robertdavidgraham/masscan)\r\n" "Accept: */*\r\n" //"Connection: Keep-Alive\r\n" //"Content-Length: 0\r\n" "\r\n"; /***************************************************************************** *****************************************************************************/ void field_name(struct BannerOutput *banout, size_t id, struct Patterns *xhttp_fields); void field_name(struct BannerOutput *banout, size_t id, struct Patterns *xhttp_fields) { unsigned i; if (id == HTTPFIELD_INCOMPLETE) return; if (id == HTTPFIELD_UNKNOWN) return; if (id == HTTPFIELD_NEWLINE) return; for (i=0; xhttp_fields.pattern; i++) { if (xhttp_fields.id == id) { banout_newline(banout, PROTO_HTTP); banout_append( banout, PROTO_HTTP, (const unsigned char*)xhttp_fields.pattern + ((xhttp_fields.pattern[0]=='<')?1:0), /* bah. hack. ugly. */ xhttp_fields.pattern_length - ((xhttp_fields.pattern[0]=='<')?1:0) /* bah. hack. ugly. */ ); return; } } } /***************************************************************************** * Initialize some stuff that's part of the HTTP state-machine-parser. *****************************************************************************/ static void * http_init(struct Banner1 * { unsigned i; /* * These match HTTP Header-Field: names */ b->http_fields = smack_create("http", SMACK_CASE_INSENSITIVE); for (i=0; http_fields.pattern; i++) smack_add_pattern( b->http_fields, http_fields.pattern, http_fields.pattern_length, http_fields.id, http_fields.is_anchored); smack_compile(b->http_fields); /* * These match HTML <tag names */ b->html_fields = smack_create("html", SMACK_CASE_INSENSITIVE); for (i=0; html_fields.pattern; i++) smack_add_pattern( b->html_fields, html_fields.pattern, html_fields.pattern_length, html_fields.id, html_fields.is_anchored); smack_compile(b->html_fields); banner_http.hello = (unsigned char*)malloc(banner_http.hello_length); memcpy((char*)banner_http.hello, http_hello, banner_http.hello_length); return b->http_fields; } /*************************************************************************** * BIZARRE CODE ALERT! * * This uses a "byte-by-byte state-machine" to parse the response HTTP * header. This is standard practice for high-performance network * devices, but is probably unfamiliar to the average network engineer. * * The way this works is that each byte of input causes a transition to * the next state. That means we can parse the response from a server * without having to buffer packets. The server can send the response * one byte at a time (one packet for each byte) or in one entire packet. * Either way, we don't. We don't need to buffer the entire response * header waiting for the final packet to arrive, but handle each packet * individually. * * This is especially useful with our custom TCP stack, which simply * rejects out-of-order packets. ***************************************************************************/ static void http_parse( const struct Banner1 *banner1, void *banner1_private, struct ProtocolState *pstate, const unsigned char *px, size_t length, struct BannerOutput *banout, struct InteractiveData *more) { unsigned state = pstate->state; unsigned i; unsigned state2; unsigned log_begin = 0; unsigned log_end = 0; size_t id; enum { FIELD_START = 9, FIELD_NAME, FIELD_COLON, FIELD_VALUE, CONTENT, CONTENT_TAG, CONTENT_FIELD }; UNUSEDPARM(banner1_private); UNUSEDPARM(more); state2 = (state>>16) & 0xFFFF; id = (state>>8) & 0xFF; state = (state>>0) & 0xFF; for (i=0; i<length; i++) switch (state) { case 0: case 1: case 2: case 3: case 4: if (toupper(px) != "HTTP/"[state]) state = STATE_DONE; else state++; break; case 5: if (px == '.') state++; else if (!isdigit(px)) state = STATE_DONE; break; case 6: if (isspace(px)) state++; else if (!isdigit(px)) state = STATE_DONE; break; case 7: /* TODO: look for 1xx response code */ if (px == '\n') state = FIELD_START; break; case FIELD_START: if (px == '\r') break; else if (px == '\n') { state2 = 0; state = CONTENT; log_end = i; banout_append(banout, PROTO_HTTP, px+log_begin, log_end-log_begin); log_begin = log_end; break; } else { state2 = 0; state = FIELD_NAME; /* drop down */ } case FIELD_NAME: if (px == '\r') break; id = smack_search_next( banner1->http_fields, &state2, px, &i, (unsigned)length); i--; if (id == HTTPFIELD_NEWLINE) { state2 = 0; state = FIELD_START; } else if (id == SMACK_NOT_FOUND) ; /* continue here */ else if (id == HTTPFIELD_UNKNOWN) { /* Oops, at this point, both ":" and "Server:" will match. * Therefore, we need to make sure ":" was found, and not * a known field like "Server:" */ size_t id2; id2 = smack_next_match(banner1->http_fields, &state2); if (id2 != SMACK_NOT_FOUND) id = id2; state = FIELD_COLON; } else state = FIELD_COLON; break; case FIELD_COLON: if (px == '\n') { state = FIELD_START; break; } else if (isspace(px)) { break; } else { //field_name(banout, id, http_fields); state = FIELD_VALUE; /* drop down */ } case FIELD_VALUE: if (px == '\r') break; else if (px == '\n') { state = FIELD_START; break; } switch (id) { case HTTPFIELD_SERVER: case HTTPFIELD_LOCATION: case HTTPFIELD_VIA: //banner_append(&px, 1, banout); break; case HTTPFIELD_CONTENT_LENGTH: if (isdigit(px&0xFF)) { ; /*todo: add content length parsing */ } else { id = 0; } break; } break; case CONTENT: { unsigned next = i; id = smack_search_next( banner1->html_fields, &state2, px, &next, (unsigned)length); if (banner1->is_capture_html) { banout_append(banout, PROTO_HTML_FULL, &px, next-i); } if (id != SMACK_NOT_FOUND) { state = CONTENT_TAG; } i = next - 1; } break; case CONTENT_TAG: for (; i<length; i++) { if (banner1->is_capture_html) { banout_append_char(banout, PROTO_HTML_FULL, px); } if (px == '>') { state = CONTENT_FIELD; break; } } break; case CONTENT_FIELD: if (banner1->is_capture_html) { banout_append_char(banout, PROTO_HTML_FULL, px); } if (px == '<') state = CONTENT; else { banout_append_char(banout, PROTO_HTML_TITLE, px); } break; case STATE_DONE: default: i = (unsigned)length; break; } if (log_end == 0 && state < CONTENT) log_end = i; if (log_begin < log_end) banout_append(banout, PROTO_HTTP, px + log_begin, log_end-log_begin); if (state == STATE_DONE) pstate->state = state; else pstate->state = (state2 & 0xFFFF) << 16 | (id & 0xFF) << 8 | (state & 0xFF); } /*************************************************************************** ***************************************************************************/ static int http_selftest(void) { return 0; } /*************************************************************************** ***************************************************************************/ struct ProtocolParserStream banner_http = { "http", 80, http_hello, sizeof(http_hello)-1, 0, http_selftest, http_init, http_parse, }; sursa : https://github.com/robertdavidgraham/masscan/blob/master/src/proto-http.c#L120 Errata Security: Bash 'shellshock' scan of the Internet
×
×
  • Create New...