Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: Webzeugs ::  MIME Multipart boundary  
Gehen Sie zu Seite Zurück  1, 2
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
Mechanics
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.01.2012
Beiträge: 1368
Beitrag Mechanics Mitglied 16:39:14 01.05.2012   Titel:              Zitieren

Ja, sie kann theoretisch ewig laufen. Mach halt noch eine Abbruchbedingung rein, die nach 10 Versuchen abbricht und dann eine Fehlermeldung ausgibt. Es ist aber extrem unwahrscheinlich, dass sowas passiert. Eine Boundary ist ja schon so aufgebaut, dass es in normalen Texten nicht vorkommt, wenn du da noch was zufälliges einbaust, dann ist die Wahrscheinlichkeit, dass es in deinem Block vorkommt, sehr gering, und dass 10 zufällige Boundaries alle in dem Block vorkommen noch viel geringer.
Was anderes wirst du nicht finden. Es gibt keine Möglichkeit, eine Boundary zu finden, die garantiert nicht in dem Text vorkommt, ohne sie in dem Text zu suchen.
triptop
Unregistrierter




Beitrag triptop Unregistrierter 16:45:36 01.05.2012   Titel:              Zitieren

okay, es wird noch schlimmer, mit einem längen limit (rfc2046), befinden wir uns in einer mission impossible... http ist total fuc*** up :mad:

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   The only mandatory global parameter for the "multipart" media type is
   the boundary parameter, which consists of 1 to 70 characters from a
   set of characters known to be very robust through mail gateways, and
   NOT ending with white space. (If a boundary delimiter line appears to
   end with white space, the white space must be presumed to have been
   added by a gateway, and must be deleted.)  It is formally specified
   by the following BNF:
 
     boundary := 0*69<bchars> bcharsnospace
 
     bchars := bcharsnospace / " "
 
     bcharsnospace := DIGIT / ALPHA / "'" / "(" / ")" /
                      "+" / "_" / "," / "-" / "." /
                      "/" / ":" / "=" / "?"


Mechanics schrieb:
...wenn du da noch was zufälliges einbaust, dann ist die Wahrscheinlichkeit, dass es in deinem Block vorkommt, sehr gering, und dass 10 zufällige Boundaries alle in dem Block vorkommen noch viel geringer.
ja, bleibt mir nichts anderes übrig, als mich bei dateiübertragungen auf wahrscheinlichkeiten zu verlassen, traurig für ein 'elite' protokoll, welches den katakomben des cern entsprungen ist :rolleyes:

Mechanics schrieb:
Es gibt keine Möglichkeit, eine Boundary zu finden, die garantiert nicht in dem Text vorkommt, ohne sie in dem Text zu suchen.
leider ists nicht mal mit suchen drin, traurig :(
Mechanics
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.01.2012
Beiträge: 1368
Beitrag Mechanics Mitglied 17:01:21 01.05.2012   Titel:              Zitieren

Mit "suchen" meinte ich nachträglich vergleichen, ob die von dir generierte Boundary im Text vorkommt.
Ich weiß nicht, was du für Probleme hast. HTTP ist sicher kein Elite Protokoll, das hat schon mehr Probleme, allein schon, dass das Encoding der Anfrage nicht definiert ist. Aber das mit den Boundaries ist jetzt halt so wild, dasselbe Problem gibts bei zig anderen Protokollen, damit kann man leben. Machs einfach und vergiss es.
triptop
Unregistrierter




Beitrag triptop Unregistrierter 17:06:45 01.05.2012   Titel:              Zitieren

ich liebe nike :)
tntnet
Mitglied

Benutzerprofil
Anmeldungsdatum: 12.06.2005
Beiträge: 1299
Beitrag tntnet Mitglied 19:24:05 01.05.2012   Titel:              Zitieren

Wenn ich 70 Zeichen habe und bei jedem Zeichen 6 Bit zur Verfügung habe, habe ich insgesamt 420 Bits, die ich frei vergeben darf um ein Boundary zu definieren, welches in dem Mime-parts nicht vor kommt. Unmöglich ist das, wenn meine Daten eine Größe von mindestens 2^420 Bits haben. Und das passt momentan wahrscheinlich nicht auf alle Festplatten, die jemals hier auf unserer Erde bisher hergestellt wurden. Also damit kann man schon mal sagen, dass die Unmöglichkeit eher akademischen Wert hat.

Die nächste Aufgabe ist es, einen geeigneten Boundary zu finden. Ein einfacher Algorithmus wäre, eine beliebige 420-bittige Zahl zu nehmen und zu prüfen, ob diese in den Daten vor kommt. Wenn ja, dann erhöhe ich die Zahl um 1. Das wiederhole ich, bis ich das Boundary nicht finde. Das ist nur eine Endlosschleife, wenn die obere akademische Bedingung erfüllt ist.

Noch zum Hintergrund, wie ich auf 6 Bit komme: Das Boundary soll aus Zeichen bestehen, die "known to be very robust" sind. Da fallen mir zunächst die Zeichen a-z und A-Z ein. Das sind schon mal 52 Zeichen. Das kann ich leicht durch 12 geeignete Sonderzeichen ergänzen. Damit habe ich 64 Ausprägungen in einem Byte und das sind 6 Bit Nutzdaten.

Eine einfache Möglichkeit, eine beliebige binäre Zahl in so ein geeignetes Format zu packen, wäre base-64 encoding. Also noch mal im Pseudocode:

Code:
1
2
3
4
5
6
7
8
startvalue = 12345678;
while(true)
{
  boundary = base64(startvalue);
  if (boundary not found in data)
    break;  // success
  startvalue = startvalue + 1;
}

_________________
Webprogrammierung mit C++: http://www.tntnet.org/
_--
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.10.2010
Beiträge: 1204
Beitrag _-- Mitglied 19:58:30 01.05.2012   Titel:              Zitieren

tntnet schrieb:
Wenn ich 70 Zeichen habe und bei jedem Zeichen 6 Bit zur Verfügung habe, habe ich insgesamt 420 Bits, die ich frei vergeben darf um ein Boundary zu definieren, welches in dem Mime-parts nicht vor kommt. Unmöglich ist das, wenn meine Daten eine Größe von mindestens 2^420 Bits haben. Und das passt momentan wahrscheinlich nicht auf alle Festplatten, die jemals hier auf unserer Erde bisher hergestellt wurden. Also damit kann man schon mal sagen, dass die Unmöglichkeit eher akademischen Wert hat.
allein schon der umstand, dass man vorher diese zeichenkette suchen muss... naja, so ist das eben bei sachen, die sich iwie vllt. auch nur auf grund ihrer herkunft durchsetzen.

_________________
"there can only be one king." - pablo escobar
_--
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.10.2010
Beiträge: 1204
Beitrag _-- Mitglied 20:03:23 01.05.2012   Titel:              Zitieren

"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life." ich belasse es mit diesem satz dabei!

_________________
"there can only be one king." - pablo escobar
Mechanics
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.01.2012
Beiträge: 1368
Beitrag Mechanics Mitglied 20:16:32 01.05.2012   Titel:              Zitieren

_-- schrieb:
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life." ich belasse es mit diesem satz dabei!


Eigentlich ist es ja noch schlimmer. Wenn jemand einen Fehler macht, der sich durchsetzt, müssen das alle supporten ;)
c++.de :: Webzeugs ::  MIME Multipart boundary  
Gehen Sie zu Seite Zurück  1, 2
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.