H_ANARXIA_EINAI_PSEMA Δημοσ. 9 Μαΐου 2014 Δημοσ. 9 Μαΐου 2014 Καλησπέρα, είμαι new στο community. Πάρτε κώδικα να γουστάρετε. Δεν κάνω ποστ τα docs ακόμα (ούτε κάτι .c αρχεία που χρειάζονται), προσπαθήστε να βρείτε τι κάνει! Μόνο για linux... #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/stat.h> #include <unistd.h> #define PROGRAM_VERSION "1.1" #define BIN_PATH "bin/" struct { const char *p, *s; } cmds[] = { { "swap", "rswap" }, { "blowfish", "blowfish_dec" }, { "rc4", "rc4_dec" }, { "aes", "aes_dec" } }; void help(void) { printf("fmask v. %s -- apply masks to files\n" "fmask [operation_1 ... operation_k] <file>\n" "operation may be: reverse, swap, xor, aes, " "blowfish or rc4\n", PROGRAM_VERSION); } char **push(char *p) { static char *s[128], **q = s + 1; *q = malloc(strlen(p) + 1); strcpy(*q, p); return q++; } char *inversecmd(char *p) { static char r[128]; size_t i; char *s = strchr(p, ' '); if(s && s - p < sizeof r) { strncpy(r, p, s - p); r[s - p] = 0; } else *r = 0; for(i = 0; i < sizeof cmds / sizeof *cmds; i++) if(strcmp(r, cmds[i].p) == 0) { strcpy(r, cmds[i].s); break; } else if(strcmp(r, cmds[i].s) == 0) { strcpy(r, cmds[i].p); break; } return r; } char *cmd(char *p, char *s) { size_t i, j = strlen(p), k = strlen(s), n = strlen(BIN_PATH); char *r; if(r = malloc(j + k + n + 2)) { strncpy(r, BIN_PATH, n); r += n; for(i = 0; i < j; i++) r[i] = p[i] == ':' ? ' ' : p[i]; r[i] = ' '; strcpy(r + i + 1, s); } return r ? r - n : 0; } int main(int argc, char **argv) { char *file, *p, *q, *qq, qqq[128], **stack = 0; int i; unsigned long lu = 0, b = 0; struct stat s; FILE *fp; if(argc < 3) { help(); return 0;; } else file = argv[--argc]; if(stat(file, &s) == -1) return 0; for(i = 1; i < argc; i++) { p = cmd(argv[i], file); if(p == NULL) return 0; if(fp = popen(p, "r")) { q = inversecmd(p + sizeof BIN_PATH - 1); if(fscanf(fp, "%lu", &lu) == 1) { b = 1; qq = strchr(argv[i], ':'); if(lu) sprintf(qqq, "%s%s resize:%lu", q, qq ? qq : "", (s.st_size += lu) - lu), lu = 0; else sprintf(qqq, "%s%s", q, qq ? qq : ""); stack = push(qqq); } pclose(fp); } free(p); } while(stack && *stack) { printf("%s ", *stack); free(*stack--); } if( puts(file); return 0; }
H_ANARXIA_EINAI_PSEMA Δημοσ. 9 Μαΐου 2014 Μέλος Δημοσ. 9 Μαΐου 2014 Άλλος ένας Windows user που τρολλάρει...
gon1332 Δημοσ. 9 Μαΐου 2014 Δημοσ. 9 Μαΐου 2014 Β π ο σ μ, γ α δ β ν. Αυτό δεν το κατάλαβα. Εφάρμοσε αν είναι ελλειπτικές καμπύλες και δώσε πόνο. Άλλος ένας Windows user που τρολλάρει... Τι ακριβώς μας ζητάς; Να περιγράψουμε τον κώδικα συνάρτηση προς συνάρτηση, ή την γενική ιδέα;
Luciddream Δημοσ. 9 Μαΐου 2014 Δημοσ. 9 Μαΐου 2014 Αυτό δεν το κατάλαβα. Εφάρμοσε αν είναι ελλειπτικές καμπύλες και δώσε πόνο. και εγώ το ψάχνω κανα 5λεπτο αλλα τίποτα... τα δύο πρώτα πρέπει να ειναι "Βρε" "Πώς"... το πρώτο το έπιασα (Δεν ξέρω τι κάνει, 100% ειναι ο Δελαπόρτας) 1
παπι Δημοσ. 9 Μαΐου 2014 Δημοσ. 9 Μαΐου 2014 και εγώ το ψάχνω κανα 5λεπτο αλλα τίποτα... τα δύο πρώτα πρέπει να ειναι "Βρε" "Πώς"... το πρώτο το έπιασα (Δεν ξέρω τι κάνει, 100% ειναι ο Δελαπόρτας) Εκπλησσομαι τα μαλα. (ειναι => εισαι anyway... ) Το δευτερο ειναι Βαλε περιγραφικα ονοματα στις μεταβλητες, γιατι αλλιως δεν βγαζει νοημα.
Dr.Fuzzy Δημοσ. 9 Μαΐου 2014 Δημοσ. 9 Μαΐου 2014 Δεν ξέρω τι κάνει, 100% ειναι ο Δελαπόρτας Αχαχαχα...κλαίω!!!!
migf1 Δημοσ. 9 Μαΐου 2014 Δημοσ. 9 Μαΐου 2014 ... Πάρτε κώδικα να γουστάρετε. Δεν κάνω ποστ τα docs ακόμα (ούτε κάτι .c αρχεία που χρειάζονται), προσπαθήστε να βρείτε τι κάνει! Μόνο για linux... ... Αυτό το νήμα είναι "βρείτε τι κάνει"; Αν ναι, σου έχω ένα ευκολάκι σε K&R... r(char*s){int m,j,l=strlen(s)-2,i=l;while(--i>0){j=rand()%l+1;m=s[j];s[j]=s[1];s[1]=m;}} Hint: Είναι συνάρτηση
geomagas Δημοσ. 9 Μαΐου 2014 Δημοσ. 9 Μαΐου 2014 Το δευτερο ειναι Βαλε περιγραφικα ονοματα στις μεταβλητες, γιατι αλλιως δεν βγαζει νοημα. Γιατί το είπες;;; Πάνω που το έγραφα... Στη μέση μ' έκοψες! Αχ, να ολοκληρώσω κάτι στη ζωή μου κι ας πεθ...... (ντούπ!)
bird Δημοσ. 9 Μαΐου 2014 Δημοσ. 9 Μαΐου 2014 Αυτό το νήμα είναι "βρείτε τι κάνει"; Αν ναι, σου έχω ένα ευκολάκι σε K&R... r(char*s){int m,j,l=strlen(s)-2,i=l;while(--i>0){j=rand()%l+1;m=s[j];s[j]=s[1];s[1]=m;}} Hint: Είναι συνάρτηση Αναγραμματισμό ενός string αφήνοντας το πρώτο και τελευταίο γράμμα όπως είναι;;; ΥΓ. Αν είναι να πιάσουμε το ioccc programming έχουμε πολύ πράμα...
gon1332 Δημοσ. 9 Μαΐου 2014 Δημοσ. 9 Μαΐου 2014 Αναγραμματισμό ενός string αφήνοντας το πρώτο και τελευταίο γράμμα όπως είναι;;; ΥΓ. Αν είναι να πιάσουμε το ioccc programming έχουμε πολύ πράμα... Κάτι τέτοιο! Φτιάξτε thread! Θα έχει πλάκα!
παπι Δημοσ. 10 Μαΐου 2014 Δημοσ. 10 Μαΐου 2014 Αυτό το νήμα είναι "βρείτε τι κάνει"; Αν ναι, σου έχω ένα ευκολάκι σε K&R... r(char*s){int m,j,l=strlen(s)-2,i=l;while(--i>0){j=rand()%l+1;m=s[j];s[j]=s[1];s[1]=m;}} Hint: Είναι συνάρτηση bitch plz void r(char* s){ for(int m,j,l=strlen(s)-2,i=l;--i>0;j=rand()%l+1,m=s[j],s[j]=s[1],s[1]=m); } 1
migf1 Δημοσ. 10 Μαΐου 2014 Δημοσ. 10 Μαΐου 2014 @bird: Ναι, κρατάει το 1ο και το τελευταίο γράμμα κι ανακατεύει τα υπόλοιπα (btw, πρόκειται για code-golfing, παρά για obfuscation). @παπι: Σε K&R δεν χρειαζόταν void (νομίζω δεν υπήρχε καν)... αν δεν έβαζες τίποτα το θεωρούσε int (όπως κάνουν και σήμερα οι compilers, για backwards compatibility, μόνο που σήμερα βγάζουν warning)
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα