Cooler_

parser POST form

Jul 18th, 2012
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.48 KB | None | 0 0
  1. /*
  2.  
  3. POST parse,
  4. extrair campos do post e o action...
  5. para inline C em  ruby para um projeto louco :-)
  6.  
  7. by Cooler_
  8.  
  9. c00f3r[at]gmail[dot]com
  10.  
  11.  
  12. */
  13. #include <stdio.h>
  14. #include <alloca.h>
  15. #include <stdlib.h>
  16.  
  17. int main()
  18. {
  19. /*
  20. deve ser passado um form por vez...
  21. assim retorna "action,campo1.campo2..." depois soh
  22. executar um split...
  23. */
  24.  char *form=" <form name=\"input\" action=\"html_form_action.asp\" method=\"get\">Username: <input type=\"text\" name=\"user\" />password: <input type=\"text\" name=\"senha\" />  <input type=\"submit\" value=\"Submit\" /> </form>";
  25.  
  26.  int *parse=(int *)alloca(2*sizeof(int ));
  27.  parse[1] = *(int*)"name";   // extract name field
  28.  parse[0] = *(int*)"acti";   // extract action field
  29.  char *p;
  30.  char *s=(char *)malloc(sizeof(char)*4098);
  31.  int x=0,i=0,counter=8,z=0;
  32.  
  33.  p=form;
  34.  
  35.  do{
  36.   x = *(int *)p;
  37.  
  38. // parseia uma Ășnica vez  o action
  39.   if(!z)
  40.    if(x == parse[z] && p[6]=='=')
  41.    {
  42.     p += counter;
  43.     do{
  44.      s[i] = *p;
  45.      p++;
  46.      i++;
  47.     }while(*p != '"' && i < 4098-1);
  48.     s[i] = ',';
  49.     i++;
  50.     counter=6;
  51.     z=1;
  52.    }
  53.  
  54.    if(x == parse[z] && p[4] == '=')
  55.    {
  56.     p += counter;
  57.     do{
  58.      s[i] = *p;
  59.      p++;
  60.      i++;
  61.     }while(*p != '"' && i < 4098-1);
  62.     s[i] = ',';
  63.     i++;
  64.    }
  65.  
  66.   p++;
  67.  }while(p[counter] != '\0' && i < 4098-1);
  68.  
  69.  s[--i]=' ';
  70.  
  71. // depois no ruby split em "," primeiro elemento o action ,demais campos para mandar payload...
  72.  puts(s);
  73.  free(s);
  74.  
  75.  return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment