Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα, είμαι 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;
}
 
Δημοσ.
  Στις 9/5/2014 στις 5:19 ΜΜ, παπι είπε

Β π ο σ μ, γ α δ β ν. 

Αυτό δεν το κατάλαβα. Εφάρμοσε αν είναι ελλειπτικές καμπύλες και δώσε πόνο.

 

  Στις 9/5/2014 στις 5:27 ΜΜ, H_ANARXIA_EINAI_PSEMA είπε

Άλλος ένας Windows user που τρολλάρει...

Τι ακριβώς μας ζητάς; Να περιγράψουμε τον κώδικα συνάρτηση προς συνάρτηση, ή την γενική ιδέα;

Δημοσ.
  Στις 9/5/2014 στις 5:40 ΜΜ, gon1332 είπε

Αυτό δεν το κατάλαβα. Εφάρμοσε αν είναι ελλειπτικές καμπύλες και δώσε πόνο.

 

και εγώ το ψάχνω κανα 5λεπτο αλλα τίποτα... τα δύο πρώτα πρέπει να ειναι "Βρε" "Πώς"...

το πρώτο το έπιασα

  Εμφάνιση κρυμμένου περιεχομένου

:P

  • Like 1
Δημοσ.
  Στις 9/5/2014 στις 5:43 ΜΜ, Luciddream είπε

και εγώ το ψάχνω κανα 5λεπτο αλλα τίποτα... τα δύο πρώτα πρέπει να ειναι "Βρε" "Πώς"...

το πρώτο το έπιασα

  Εμφάνιση κρυμμένου περιεχομένου

:P

Εκπλησσομαι τα μαλα. (ειναι => εισαι anyway... )

 

Το δευτερο ειναι

Βαλε περιγραφικα ονοματα στις μεταβλητες, γιατι αλλιως δεν βγαζει νοημα.

Δημοσ.
  Στις 9/5/2014 στις 4:34 ΜΜ, H_ANARXIA_EINAI_PSEMA είπε

...

Πάρτε κώδικα να γουστάρετε. Δεν κάνω ποστ τα 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: Είναι συνάρτηση :P
Δημοσ.
  Στις 9/5/2014 στις 5:49 ΜΜ, παπι είπε

Το δευτερο ειναι

Βαλε περιγραφικα ονοματα στις μεταβλητες, γιατι αλλιως δεν βγαζει νοημα.

 

Γιατί το είπες;;; Πάνω που το έγραφα... Στη μέση μ' έκοψες!

Αχ, να ολοκληρώσω κάτι στη ζωή μου κι ας πεθ...... (ντούπ!)

Δημοσ.
  Στις 9/5/2014 στις 5:51 ΜΜ, migf1 είπε

 

Αυτό το νήμα είναι "βρείτε τι κάνει";

 

Αν ναι, σου έχω ένα ευκολάκι σε 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: Είναι συνάρτηση :P

 

Αναγραμματισμό ενός string αφήνοντας το πρώτο και τελευταίο γράμμα όπως είναι;;;

 

ΥΓ. Αν είναι να πιάσουμε το ioccc programming έχουμε πολύ πράμα... :P

Δημοσ.
  Στις 9/5/2014 στις 6:34 ΜΜ, bird είπε

Αναγραμματισμό ενός string αφήνοντας το πρώτο και τελευταίο γράμμα όπως είναι;;;

 

ΥΓ. Αν είναι να πιάσουμε το ioccc programming έχουμε πολύ πράμα... :P

 

Κάτι τέτοιο!

 

Φτιάξτε thread! Θα έχει πλάκα!

Δημοσ.
  Στις 9/5/2014 στις 5:51 ΜΜ, migf1 είπε

 

Αυτό το νήμα είναι "βρείτε τι κάνει";

 

Αν ναι, σου έχω ένα ευκολάκι σε 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: Είναι συνάρτηση :P

 

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);
}
  • Like 1
Δημοσ.

@bird: Ναι, κρατάει το 1ο και το τελευταίο γράμμα κι ανακατεύει τα υπόλοιπα (btw, πρόκειται για code-golfing, παρά για obfuscation).

 

@παπι: Σε K&R δεν χρειαζόταν void (νομίζω δεν υπήρχε καν)... αν δεν έβαζες τίποτα το θεωρούσε int (όπως κάνουν και σήμερα οι compilers, για backwards compatibility, μόνο που σήμερα βγάζουν warning)

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...