source: titan/plugins/tithek/filenuke.h @ 24272

Last change on this file since 24272 was 24272, checked in by obi, 10 years ago

[titan] tithek fix filenuke

File size: 8.1 KB
Line 
1#ifndef FILENUKE_H
2#define FILENUKE_H
3
4char* filenuke(char* host, char* file, char* hosterurl)
5{
6        debug(99, "in host: %s file: %s", host, file);
7        int debuglevel = getconfigint("debuglevel", NULL);
8        char* tmphost = NULL, *error = NULL, *tmpfile = NULL, *tmpstr = NULL, *send = NULL, *id = NULL, *fname = NULL, *op = NULL, *hash = NULL, *hashlen = NULL, *ip = NULL;
9        char* b36code = NULL, *base = NULL, *search = NULL, *post = NULL, *streamlink = NULL, *tmpstr2 = NULL, *tmpstr3 = NULL, *charlist = NULL;
10//      char* cmd = NULL;
11       
12        if(host == NULL || file == NULL) return NULL;
13
14        tmphost = ostrcat("www.", host, 0, 0);
15        tmpfile = ostrcat("/", file, 0, 0);
16        debug(99, "tmphost: %s", tmphost);
17        ip = get_ip(tmphost);
18        debug(99, "ip: %s", ip);
19        debug(99, "test host only: %s", get_ip(host));
20        debug(99, "tmpfile: %s", tmpfile);
21        tmpstr = gethttp(tmphost, tmpfile, 80, NULL, NULL, 10000, NULL, 0);
22        debug(99, "write file");
23        sleep(2);
24        titheklog(debuglevel, "/tmp/filenuke1_tmpstr", NULL, tmpstr);
25
26        if(ostrstr(tmpstr, "<title>The page is temporarily unavailable</title>") != NULL)
27        {
28                error = string_resub("<td align=\"center\" valign=\"middle\">", "</td>", tmpstr, 0);
29                string_deltags(error);
30                error = string_replace("Terms", "\nTerms", error, 1);
31                error = strstrip(error);
32                if(error == NULL || strlen(error) == 0)
33                        error = ostrcat(_("The page is temporarily unavailable"), error, 0, 1);
34                textbox(_("Message"), error, _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1200, 400, 0, 0);
35                goto end;
36        }
37
38        //get hash from tmpstr
39        char* pos1 = ostrstr(tmpstr, "<input type=\"hidden\" name=\"fname\" value=");
40        fname = getxmlentry(pos1, "value=");
41        debug(99, "fname: %s", fname);
42        if(fname == NULL) goto end;
43
44        char* pos2 = ostrstr(tmpstr, "<input type=\"hidden\" name=\"id\" value=");
45        id = getxmlentry(pos2, "value=");
46        debug(99, "id: %s", id);
47        if(id == NULL) goto end;
48
49        char* pos3 = ostrstr(tmpstr, "<input type=\"hidden\" name=\"op\" value=");
50        op = getxmlentry(pos3, "value=");
51        free(tmpstr); tmpstr = NULL;
52        debug(99, "op: %s", op);
53        if(op == NULL) goto end;
54
55        hash = ostrcat(hash, "id=", 1, 0);     
56        hash = ostrcat(hash, id, 1, 0);
57        hash = ostrcat(hash, "&referer=&fname=", 1, 0);
58        hash = ostrcat(hash, fname, 1, 0);
59        hash = ostrcat(hash, "&method_free=Free&usr_login=&op=", 1, 0);
60        hash = ostrcat(hash, op, 1, 0);
61        debug(99, "hash: %s", hash);
62
63        hashlen = oitoa(strlen(hash));
64       
65        //create send string
66        send = ostrcat(send, "POST /", 1, 0);
67        send = ostrcat(send, id, 1, 0);
68        send = ostrcat(send, " HTTP/1.0\r\nContent-Length: ", 1, 0);
69        send = ostrcat(send, hashlen, 1, 0);
70        send = ostrcat(send, "\r\nAccept-Encoding: gzip\r\nConnection: close\r\nUser-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.99 Safari/535.1\r\nHost: ", 1, 0);
71        send = ostrcat(send, host, 1, 0);
72        send = ostrcat(send, "\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\n", 1, 0);
73        send = ostrcat(send, hash, 1, 0);
74        debug(99, "send: %s", send);
75
76        sleep(5);
77/*
78        //send and receive answer
79        post = gethttpreal(tmphost, tmpfile, 80, NULL, NULL, NULL, 0, send, NULL, 5000, 0);
80        titheklog(debuglevel, "/tmp/filenuke2_tmpstr_post1", NULL, post);
81
82        cmd = ostrcat("cat /tmp/tithek/post | zcat", NULL, 0, 0);
83        debug(99, "cmd: %s", cmd);
84        post = command(cmd);
85        writesys("/tmp/filenuke2_post1", post, 0);
86        free(cmd); cmd = NULL;
87*/
88// new start
89// working with
90// KinoX_Star.Wars.The.Clone.Wars_1.(de)_Staffel.4.Folge.19_FileNuke.com.mp4
91// http://filenuke.com/3gop8ac00z3v;3gop8ac00z3v;FileNuke.com
92        post = gethttpreal(tmphost, tmpfile, 80, NULL, NULL, NULL, 0, send, NULL, 5000, 0);
93        debug(99, "post: %s", post);
94// new end
95
96        free(tmpstr),tmpstr = NULL;
97        tmpstr = string_resub(";return p}('", ");'", post, 0);
98        titheklog(debuglevel, "/tmp/filenuke3_tmpstr1", NULL, tmpstr);
99       
100        post = string_replace_all(tmpstr, "", post, 1);
101        post = string_replace_all(";return p}(');'", "", post, 1);
102        titheklog(debuglevel, "/tmp/filenuke4_post2", NULL, post);
103
104        free(tmpstr),tmpstr = NULL;
105        free(b36code),b36code = NULL;
106        tmpstr = string_resub(";return p}('", ");'", post, 0);
107        titheklog(debuglevel, "/tmp/filenuke5_tmpstr2", NULL, tmpstr);
108
109        b36code = oregex(".*;',[0-9]{2,2},[0-9]{2,2},'(.*)'.split.*", post);
110       
111        b36code = string_replace_all("||", "| |", b36code, 1);
112        titheklog(debuglevel, "/tmp/filenuke6_b36code2", NULL, b36code);
113       
114        struct splitstr* ret1 = NULL;
115        int count = 0;
116        int i = 0;
117        ret1 = strsplit(b36code, "|", &count);
118
119        charlist = ostrcat(charlist, "\"", 1, 0);
120        charlist = ostrcat(charlist, "|", 1, 0);
121        charlist = ostrcat(charlist, "'", 1, 0);
122        charlist = ostrcat(charlist, "|", 1, 0);
123        charlist = ostrcat(charlist, ".", 1, 0);
124        charlist = ostrcat(charlist, "|", 1, 0);
125        charlist = ostrcat(charlist, ";", 1, 0);
126        charlist = ostrcat(charlist, "|", 1, 0);
127        charlist = ostrcat(charlist, ":", 1, 0);
128        charlist = ostrcat(charlist, "|", 1, 0);
129        charlist = ostrcat(charlist, "=", 1, 0);
130        charlist = ostrcat(charlist, "|", 1, 0);
131        charlist = ostrcat(charlist, ",", 1, 0);
132        charlist = ostrcat(charlist, "|", 1, 0);
133        charlist = ostrcat(charlist, " ", 1, 0);
134        charlist = ostrcat(charlist, "|", 1, 0);
135        charlist = ostrcat(charlist, "\\", 1, 0);
136        charlist = ostrcat(charlist, "|", 1, 0);
137        charlist = ostrcat(charlist, "/", 1, 0);
138        charlist = ostrcat(charlist, "|", 1, 0);
139        charlist = ostrcat(charlist, "(", 1, 0);
140        charlist = ostrcat(charlist, "|", 1, 0);
141        charlist = ostrcat(charlist, ")", 1, 0);
142
143        for(i = 0; i < count; i++)
144        {
145                if(ostrstr((&ret1[i])->part, " ") != NULL)
146                {
147                        printf("continue\n");
148                        continue;
149                }
150                char* x = oltostr(i, 36);
151
152                struct splitstr* ret2 = NULL;
153                int count2 = 0;
154                int i2 = 0;
155                tmpstr2 = ostrcat(charlist, NULL, 0, 0);
156                ret2 = strsplit(tmpstr2, "|", &count2);
157                for(i2 = 0; i2 < count2; i2++)
158                {
159                        struct splitstr* ret3 = NULL;
160                        int count3 = 0;
161                        int i3 = 0;
162                        tmpstr3 = ostrcat(charlist, NULL, 0, 0);
163                        ret3 = strsplit(tmpstr3, "|", &count3);
164                        for(i3 = 0; i3 < count3; i3++)
165                        {
166                                debug(99, "-----------------------------------------------");
167                                debug(99, "replace %s%s%s <> %s%s%s",(&ret2[i2])->part, x, (&ret3[i3])->part, (&ret2[i2])->part, (&ret1[i])->part, (&ret3[i3])->part);
168
169                                base = ostrcat(base, (&ret2[i2])->part, 1, 0);
170                                base = ostrcat(base, x, 1, 0);
171                                base = ostrcat(base, (&ret3[i3])->part, 1, 0);         
172                                search = ostrcat(search, (&ret2[i2])->part, 1, 0);
173                                search = ostrcat(search, (&ret1[i])->part, 1, 0);
174                                search = ostrcat(search, (&ret3[i3])->part, 1, 0);
175                                tmpstr = string_replace_all(base, search, tmpstr, 1);
176                                free(base), base = NULL;
177                                free(search), search = NULL;
178                        }
179                        free(ret3), ret3 = NULL;
180                        free(tmpstr3), tmpstr3 = NULL;
181                }
182                free(ret2), ret2 = NULL;
183                free(tmpstr2), tmpstr2 = NULL;
184                free(x);
185        }
186        free(ret1), ret1 = NULL;
187        free(b36code), b36code = NULL;
188        free(post), post = NULL;
189        free(charlist), charlist = NULL;
190
191        titheklog(debuglevel, "/tmp/filenuke7_tmpstr_last", NULL, tmpstr);
192
193        streamlink = oregex(".*file.*(http:.*video.flv).*image.*", tmpstr);
194        if(streamlink == NULL)
195                streamlink = oregex(".*file.*(http:.*video.mp4).*image.*", tmpstr);                             
196
197        if(streamlink == NULL)
198                streamlink = oregex(".*file.*(http:.*video.mkv).*image.*", tmpstr);
199
200        if(streamlink == NULL)
201                streamlink = oregex(".*file.*(http:.*video.avi).*image.*", tmpstr);
202
203        if(streamlink == NULL)
204                streamlink = oregex(".*src=.*(http:.*video.mp4).*\".*", tmpstr);
205
206        if(streamlink == NULL)
207                streamlink = oregex(".*src=.*(http:.*video.mkv).*\".*", tmpstr);
208
209        if(streamlink == NULL)
210                streamlink = oregex(".*src=.*(http:.*video.avi).*\".*", tmpstr);
211               
212        if(streamlink == NULL)
213                streamlink = oregex(".*value=.*(http:.*video.mp4).*\".*", tmpstr);                             
214
215        if(streamlink == NULL)
216                streamlink = oregex(".*value=.*(http:.*video.mkv).*\".*", tmpstr);
217
218        if(streamlink == NULL)
219                streamlink = oregex(".*value=.*(http:.*video.avi).*\".*", tmpstr);                     
220
221        titheklog(debuglevel, "/tmp/filenuke8_streamlink", NULL, streamlink);
222
223        free(tmpstr); tmpstr = NULL;
224
225end:
226
227        free(error); error = NULL;
228        free(tmphost); tmphost = NULL;
229        free(tmpfile); tmpfile = NULL;
230        free(tmpstr); tmpstr = NULL;
231        free(send); send = NULL;
232        free(hash), hash = NULL;
233        free(hashlen), hashlen = NULL;
234        free(op), op = NULL;
235        free(id), id = NULL;
236        free(fname), fname = NULL;
237        free(ip); ip = NULL;
238
239        return streamlink;
240}
241
242#endif
Note: See TracBrowser for help on using the repository browser.