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

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

Δημοσ.

Καλησπέρα, είμαι 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;
}
 
Δημοσ.

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

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

 

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

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

Δημοσ.

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

 

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

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

(Δεν ξέρω τι κάνει, 100% ειναι ο Δελαπόρτας)

:P

  • Like 1
Δημοσ.

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

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

(Δεν ξέρω τι κάνει, 100% ειναι ο Δελαπόρτας)

:P

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

 

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

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

Δημοσ.

...

Πάρτε κώδικα να γουστάρετε. Δεν κάνω ποστ τα 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
Δημοσ.

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

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

 

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

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

Δημοσ.

 

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

 

Αν ναι, σου έχω ένα ευκολάκι σε 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

Δημοσ.

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

 

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

 

Κάτι τέτοιο!

 

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

Δημοσ.

 

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

 

Αν ναι, σου έχω ένα ευκολάκι σε 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)

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

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

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

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

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

Σύνδεση

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

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