SORU
18 Mart 2012, Pazar


Giriş yapmaya çalışıyorum RDP AS3 kullanarak

RDP AS3 kullanarak (hava) giriş yapmaya çalışıyorum. İyi, kaynak yetersizliği var gerçek süreci anlamak için dikkate yokum.

İlk gönderen kullanıcı adı, sunucudan bir yanıt aldı geçtiğimiz aldık, ve şimdi ilk bağlantı isteği duyuyorum.

Tüm verilerimi gönderiyorum ve trafik koklama, netmon gönderiyorum (t125) ne doğru tanımak olduğunu görüyorum. BendeğilRDP tarafından kesilmeden ve ack bir paket gönderiyorlar ama bekliyorum bu cevabı almak istemiyorum.

Çapraz açık kaynak RDP istemcisi olan connectoid ile başvuru olmuştur. Bağlantı kodu, küçük ve büyük indian tam sayılardan oluşan bir karışım yazıyorlar yerde takıldım.

Sınırlı örnekler de orada (daha fazla paket döker gibi) baktığımda, bu işlem için bağlantı uzunluğu 412, ama bytearray benim gibi 470 olduğunu görüyorum.

Doğru olduğuna inandığım şey için connectoid yöntemleri çevirdim, ama indian tür karışımı ile, hala emin değilim.

Eğer bu bozuk değilse özür dilerim, ama bana yardım etmen için sana yardım etmek için elimden geleni yapıyorum. Bazı kod dönüştürme yapmaya çalıştım ne gösteren ekleyeceğim.

public function sendMcsData(): void {
    trace("Secure.sendMcsData");
    var num_channels: int = 2;
    //RdpPacket_Localised dataBuffer = new RdpPacket_Localised(512);
    var hostlen: int = 2 * "myhostaddress.ath.cx".length;
    if (hostlen > 30) {
        hostlen = 30;
    }
    var length: int = 158;
    length  = 76   12   4;
    length  = num_channels * 12   8;
    dataBuffer.writeShort(5); /* unknown */
    dataBuffer.writeShort(0x14);
    dataBuffer.writeByte(0x7c); //set 8 is write byte //write short is setbigendian 16 //
    dataBuffer.writeShort(1);
    dataBuffer.writeShort(length | 0x8000); // remaining length
    dataBuffer.writeShort(8); // length?
    dataBuffer.writeShort(16);
    dataBuffer.writeByte(0);
    var b1: ByteArray = new ByteArray();
    b1.endian = Endian.LITTLE_ENDIAN;
    b1.writeShort(0xc001);
    dataBuffer.writeBytes(b1);
    dataBuffer.writeByte(0);
    var b2: ByteArray = new ByteArray();
    b2.endian = Endian.LITTLE_ENDIAN;
    b2.writeInt(0x61637544);
    dataBuffer.writeBytes(b2);
    //dataBuffer.setLittleEndian32(0x61637544); // "Duca" ?!
    dataBuffer.writeShort(length - 14 | 0x8000); // remaining length
    var b3: ByteArray = new ByteArray();
    b3.endian = Endian.LITTLE_ENDIAN;
    // Client information
    b3.writeShort(SEC_TAG_CLI_INFO);
    b3.writeShort(true ? 212 : 136); // length
    b3.writeShort(true ? 4 : 1);
    b3.writeShort(8);
    b3.writeShort(600);
    b3.writeShort(1024);
    b3.writeShort(0xca01);
    b3.writeShort(0xaa03);
    b3.writeInt(0x809); //should be option.keybaortd layout just guessed 1
    b3.writeInt(true ? 2600 : 419); // or 0ece
    dataBuffer.writeBytes(b3);
    // // client
    // build? we
    // are 2600
    // compatible
    // :-)
    /* Unicode name of client, padded to 32 bytes */
    dataBuffer.writeMultiByte("myhost.ath.cx".toLocaleUpperCase(), "ISO");
    dataBuffer.position = dataBuffer.position   (30 - "myhost.ath.cx".toLocaleUpperCase()
        .length);
    var b4: ByteArray = new ByteArray();
    b4.endian = Endian.LITTLE_ENDIAN;
    b4.writeInt(4);
    b4.writeInt(0);
    b4.writeInt(12);
    dataBuffer.writeBytes(b4);
    dataBuffer.position = dataBuffer.position   64; /* reserved? 4   12 doublewords */
    var b5: ByteArray = new ByteArray();
    b5.endian = Endian.LITTLE_ENDIAN;
    b5.writeShort(0xca01); // out_uint16_le(s, 0xca01);
    b5.writeShort(true ? 1 : 0);
    if (true) //Options.use_rdp5)
    {
        b5.writeInt(0); // out_uint32(s, 0);
        b5.writeByte(24); // out_uint8(s, g_server_bpp);
        b5.writeShort(0x0700); // out_uint16_le(s, 0x0700);
        b5.writeByte(0); // out_uint8(s, 0);
        b5.writeInt(1); // out_uint32_le(s, 1);
        b5.position = b5.position   64;
        b5.writeShort(SEC_TAG_CLI_4); // out_uint16_le(s,
        // SEC_TAG_CLI_4);
        b5.writeShort(12); // out_uint16_le(s, 12);
        b5.writeInt(false ? 0xb : 0xd); // out_uint32_le(s,
        // g_console_session
        // ?
        // 0xb
        // :
        // 9);
        b5.writeInt(0); // out_uint32(s, 0);
    }
    // Client encryption settings //
    b5.writeShort(SEC_TAG_CLI_CRYPT);
    b5.writeShort(true ? 12 : 8); // length
    // if(Options.use_rdp5) dataBuffer.setLittleEndian32(Options.encryption ?
    // 0x1b : 0); // 128-bit encryption supported
    // else
    b5.writeInt(true ? (false ? 0xb : 0x3) : 0);
    if (true) b5.writeInt(0); // unknown
    if (true && (num_channels > 0)) {
        trace(("num_channels is "   num_channels));
        b5.writeShort(SEC_TAG_CLI_CHANNELS); // out_uint16_le(s,
        // SEC_TAG_CLI_CHANNELS);
        b5.writeShort(num_channels * 12   8); // out_uint16_le(s,
        // g_num_channels
        // * 12
        //   8);
        // //
        // length
        b5.writeInt(num_channels); // out_uint32_le(s,
        // g_num_channels);
        // // number of
        // virtual
        // channels
        dataBuffer.writeBytes(b5);
        trace("b5 is bigendin"   (b5.endian == Endian.BIG_ENDIAN));
        for (var i: int = 0; i < num_channels; i  ) {
            dataBuffer.writeMultiByte("testtes"   i, "ascii"); //, 8); // out_uint8a(s,
            // g_channels[i].name,
            // 8);
            dataBuffer.writeInt(0x40000000); // out_uint32_be(s,
            // g_channels[i].flags);
        }
    }
    //socket.
    //buffer.markEnd();
    //return buffer;
}

CEVAP
28 EKİM 2010, PERŞEMBE


Sonra bir mobil uygulama doğrulama ve yetkilendirme yönlerini işleyen sunucu tarafı kimlik doğrulama mekanizması nedir?

Bu durumda olduğunu varsayarsak, o zaman şu şekilde yaklaşmak istiyorum (ama sadece 'Java geliştirici bir C yani. çünkü ben de# adam bunu farklı bir şekilde yapar):

Dinlendirici doğrulama ve yetkilendirme hizmeti

  1. Bu dinlemelerini önlemek için yalnızca HTTPS üzerinden çalışır.
  2. RESTEasy, Spring Security CAS Bir Arada Çoklu Oturum Açma birden çok uygulama için () dayalı olacaktır.
  3. Her iki tarayıcı ile çalışmak ve web-Etkin istemci uygulamaları
  4. Yönetim arabirimi, kullanıcıların kendi bilgilerini düzenlemek için izin vermek için, ve yöneticiler web tabanlı bir hesabı olacak (özel uygulamalar için) izin düzeylerini değiştirmek için

İstemci tarafı güvenlik kütüphane/uygulama

  1. Desteklenen her platform için (örneğin Symbian, Android, iOS vb) oluşturmak en uygun uygulama yerel güvenlik kütüphane platformu (örneğin Java,dil ObjectiveC, C vs.)
  2. Kütüphane HTTPS isteği yönetmelidir oluşumu mevcut API kullanarak belirli bir platform (örneğin, Java için kullanır vb URLConnection)
  3. Genel kimlik doğrulama tüketiciler ve izin Kütüphanesi (çünkü bu hepsi) belirli bir kod olacak ve eğer mutlu olmayacak arayüzü şimdiye kadar çok emin olun, böylece değişiklikler esnek. Varolan bir tasarım izleyin Bahar Güvenlik gibi seçenekler.

Yani 30,000 manzarası artık ft tamamlandıktan nasıl yapıyor biliyor musunuz? Bu zor bir tarayıcı istemci ile sunucu tarafında doğrulama ve yetkilendirme sistemi listelenmiştir teknolojilerine dayalı oluşturmak için değil. HTTPS ile birlikte, çerçeveler güvenli bir işlem paylaşılan bir belirteç (genellikle çerez olarak sunulan) kimlik doğrulama işlemi tarafından oluşturulan ve kullanıcı bir şey yapmak istediğinde kullanılan temel sağlar. Bu simge, herhangi bir istek yer alır her sunucu için istemci tarafından sunuluyor.

Yerel mobil uygulaması durumunda, aşağıdaki: bir çözüm peşinde olduğun gibi görünüyor

  1. İstemci uygulama tarafından tanımlanan Erişim Kontrol Listesi (ACL) yöntem çağrıları için çalışma zamanı erişim kontrol etti. Örneğin, belirli bir kullanıcı okuyabilir koleksiyonundan bir yöntem, ama onların sadece ACL izinleri erişmek için nesnelere bir Q onların adı bu yüzden bazı veri toplama quiety tarafından çekilen güvenlik uçağı. Java bu basit, sadece arama kodu Bahar Güvenlik açıklamaları kullanım ve uygun ACL tepki süreci uygulamak. Diğer dillerde, tek başınasın ve muhtemelen güvenlik kütüphane içine çağıran demirbaş güvenlik kodunu girmeniz gerekir. Eğer dil SOP (Boy Yönelimli Programlama) destekliyorsa, o zaman bu durum için sonuna kadar kullan.
  2. Güvenlik kütüphanesine bağlı kalmak zorunda değil ki, geçerli uygulama için özel belleğe önbelleğe yetkileri tam listesi. Oturumda uzunluğuna bağlı olarak, bu bir daha asla tekrarlanmaması alır bu bir kerelik bir işlem olabilir.

Ne yaparsan yapkendi güvenlik protokolü icat etmeye çalışmayınya da gizliliğin sağladığı güvenlik kullanın. Asla mevcut ve ücretsiz olanlar daha bunun için iyi bir algoritma yazmak mümkün olacak. Ayrıca, insanların iyi bilinen algoritmaları güven. Eğer güvenlik kütüphane yerel mobil uygulamalar SSL bir arada kullanma izni ve Kimlik Doğrulama sağlar, SpringSecurity HTTPS ve şifreli belirteçleri AES diyorsanız o zaman hemen pazarda creditibility olacak.

Bu yardımcı olur, ve girişim ile iyi şanslar umarım. Eğer daha fazla bilgi isterseniz, bana haber ver - tamamen birkaç web uygulamaları yazdım Bahar Güvenlik, ACL ve benzeri dayalı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • chickenby

    chickenby

    2 HAZİRAN 2008
  • Michael Neal

    Michael Neal

    2 Mayıs 2009
  • Moodle

    Moodle

    11 Mayıs 2010