commit 8afedcde7390e7515f35dd07f84af91015aa0b7e Author: Vinod Yegneswaran vinod@csl.sri.com Date: Mon Nov 7 20:35:29 2011 +0000
git-svn-id: svn+ssh://spartan.csl.sri.com/svn/private/DEFIANCE@129 a58ff0ac-194c-e011-a152-003048836090 --- src/steg/payloads.c | 152 ++++++++++++--------------------------------------- src/steg/payloads.h | 1 - 2 files changed, 36 insertions(+), 117 deletions(-)
diff --git a/src/steg/payloads.c b/src/steg/payloads.c index 0cae234..a3e2f65 100644 --- a/src/steg/payloads.c +++ b/src/steg/payloads.c @@ -546,48 +546,51 @@ unsigned int find_client_payload(char* buf, int len, int type) {
-int skipJSPattern(char *cp, int len) { - int i,j; +/* int skipJSPattern(char *cp, int len) { */ +/* int i,j; */
- char keywords [21][10]= {"function", "return", "var", "int", "random", "Math", "while", - "else", "for", "document", "write", "writeln", "true", - "false", "True", "False", "window", "indexOf", "navigator", "case", "if"};
- if (len < 1) return 0; +/* char keywords [21][10]= {"function", "return", "var", "int", "random", "Math", "while", */ +/* "else", "for", "document", "write", "writeln", "true", */ +/* "false", "True", "False", "window", "indexOf", "navigator", "case", "if"}; */
- // change the limit to 21 to enable if as a keyword - for (i=0; i < 20; i++) { - char* word = keywords[i]; - - if (len <= (int) strlen(word)) - continue;
- if (word[0] != cp[0]) - continue; +/* return 0; */ +/* if (len < 1) return 0; */
- for (j=1; j < (int) strlen(word); j++) { - if (isxdigit(word[j])) { - if (!isxdigit(cp[j])) - goto next_word; - else - continue; - } +/* // change the limit to 21 to enable if as a keyword */ +/* for (i=0; i < 20; i++) { */ +/* char* word = keywords[i]; */ + +/* if (len <= (int) strlen(word)) */ +/* continue; */ + +/* if (word[0] != cp[0]) */ +/* continue; */ + +/* for (j=1; j < (int) strlen(word); j++) { */ +/* if (isxdigit(word[j])) { */ +/* if (!isxdigit(cp[j])) */ +/* goto next_word; */ +/* else */ +/* continue; */ +/* } */
- if (cp[j] != word[j]) - goto next_word; - } - if (!isalnum(cp[j])) - return strlen(word)+1; +/* if (cp[j] != word[j]) */ +/* goto next_word; */ +/* } */ +/* if (!isalnum(cp[j])) */ +/* return strlen(word)+1; */
- next_word: - continue; - } +/* next_word: */ +/* continue; */ +/* } */ + +/* return 0; */ +/* } */
- return 0; -}
-/*
int skipJSPattern (char *cp, int len) {
@@ -649,7 +652,7 @@ int skipJSPattern (char *cp, int len) {
return 0; } -*/ +
int isalnum_ (char c) { @@ -753,89 +756,6 @@ int offset2Hex (char *p, int range, int isLastCharHex) { }
/* - * capacityJS returns the number of usable hex char - * in the input HTTP message for data encoding - * - * Input: - * buf - pointer to HTTP message - * len - sizeof buf - * mode - - * CONTENT_JAVASCRIPT (case 1); HTTP message body is a JavaScript - * (e.g., Content-Type: {text/javascript, application/x-javascript, - * application/javascript}) - * CONTENT_HTML_JAVASCRIPT (case 2) - * Content-Type: text/html and HTTP message body contains - * <script type="text/javascript"> ... </script> - * - * Output: - * capacityJS returns the number of usable hex char that can be embedded - * in the HTTP message - * - * Note: - * This is a prototype for the simple version (all hex char are usable) - * will refine this to skip JavaScript keywords in the next iteration - * - */ - - - -unsigned int capacityJS (char* buf, int len, int mode) { - char *hEnd, *bp, *jsStart, *jsEnd; - int cnt=0; - - // jump to the beginning of the body of the HTTP message - hEnd = strstr(buf, "\r\n\r\n"); - if (hEnd == NULL) { - // cannot find the separator between HTTP header and HTTP body - return 0; - } - bp = hEnd + 4; - - if (mode == CONTENT_JAVASCRIPT) { - while (bp < (buf+len)) { - if (isxdigit(*bp)) { - cnt++; -#ifdef DEBUG - printf("%c", *bp); -#endif - } - bp++; - } -#ifdef DEBUG - printf("\n"); -#endif - return cnt; - } else if (mode == CONTENT_HTML_JAVASCRIPT) { - while (bp < (buf+len)) { - jsStart = strstr(bp, "<script type="text/javascript">"); - if (jsStart == NULL) break; - bp = jsStart+31; - jsEnd = strstr(bp, "</script>"); - if (jsEnd == NULL) break; - // count the number of usable hex char between jsStart+31 and jsEnd - while (bp < jsEnd) { - if (isxdigit(*bp)) { - cnt++; -#ifdef DEBUG - printf("%c", *bp); -#endif - } - bp++; - } - bp += 9; - } -#ifdef DEBUG - printf("\n"); -#endif - return cnt; - } else { - fprintf(stderr, "Unknown mode (%d) for capacityJS() ... \n", mode); - return 0; - } - -} - -/* * capacityJS3 is the next iteration for capacityJS */ unsigned int capacityJS3 (char* buf, int len, int mode) { diff --git a/src/steg/payloads.h b/src/steg/payloads.h index 56729fe..7d66bbf 100644 --- a/src/steg/payloads.h +++ b/src/steg/payloads.h @@ -143,7 +143,6 @@ int skipJSPattern (char *cp, int len); int isalnum_ (char c); int offset2Alnum_ (char *p, int range); int offset2Hex (char *p, int range, int isLastCharHex); -unsigned int capacityJS (char* buf, int len, int mode); unsigned int capacityJS3 (char* buf, int len, int mode); unsigned int get_max_JS_capacity(void); unsigned int get_max_HTML_capacity(void);
tor-commits@lists.torproject.org