Picproje Elektronik Sitesi

DERLEYİCİLER => Diğer Derleyiciler => Konuyu başlatan: esensoy - 09 Nisan 2014, 12:21:12

Başlık: XTEA şifre kırma, key bulma
Gönderen: esensoy - 09 Nisan 2014, 12:21:12
Selamlar,
XTEA ile şifrelenmiş bir değişkenim var,
Değişkenin ilk ve son halini biliyorum,
İterasyonun 16 olduğunu,16 byte yani key in her bir karakterinin de 0x20-0x7F arasında olduğunu varsayarak key i elde etmeye çalışıyorum,

Mantık;
4*32bitlik key i 1 er artırarak tüm olasılıkları deniyorum,
key byte larının 0x20 altında ve 0x7F üzerinde kalan kısımlarını elemek için özel bir artir() fonksiyonu oluşturdum,
yazdığım kod ;void artir(unsigned char* sayi){
unsigned __int8* j0=sayi;
unsigned __int8* j1=sayi+1;
unsigned __int8* j2=sayi+2;
unsigned __int8* j3=sayi+3;
unsigned long* sayi1=sayi;

if(*sayi1==0x7F7F7F7F)goto bitir;
*sayi1=*sayi1+1;
if (*j0<0x20)*j0=0x20;
if (*j1<0x20)*j1=0x20;
if (*j2<0x20)*j2=0x20;
if (*j3<0x20)*j3=0x20;
if (*j0>0x7F){
*j0=0x20;
*j1=*j1+1;
}
if (*j1>0x7F){
*j1=0x20;
*j2=*j2+1;
}
if (*j2>0x7F){
*j2=0x20;
*j3=*j3+1;
}
if (*j3>0x7F)*j3=0x20;
bitir:;
}
void encipher(unsigned int iterations, unsigned long* v, unsigned long* key){
    unsigned long v0=v[0], v1=v[1], i;
    unsigned long sum=0, delta=0x9E3779B9;
FILE *fp;
unsigned char* ptr;
for(key[3]=0x20202020;key[3]<0x7F7F7F7F;artir(&key[3])){
for(key[2]=0x20202020;key[2]<0x7F7F7F7F;artir(&key[2])){
for(key[1]=0x20202020;key[1]<0x7F7F7F7F;artir(&key[1])){
for(key[0]=0x20202020;key[0]<0x7F7F7F7F;artir(&key[0])){
v0=v[0]; v1=v[1]; sum=0;
for(i=0; i<iterations; i++)
{
v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + key[sum & 3]);
sum += delta;
v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + key[(sum>>11) & 3]);
}
if ((v0==0xEC208375)&(v1==0xE6DB73C6)){
printf("Dogru v0=%lX,v1=%lX\r\n",v0,v1);
printf("%X%X%X%X\r\n",key[3],key[2],key[1],key[0]);
fp = fopen( "buldu.txt", "wb");
fwrite(ptr,1,16,fp);
fclose(fp);
system("pause");
}else{
//printf("Yanlış\r\n");
}
}
}
}
}
}

Şimdi,
Kodun testlerini yaptım, çalışıyor, sıkıntısı yok

Fakat,
İş boyle olunca key olasılığı (0x7F-0x20)^16 gibi abuk bir rakam çıkıyor ve pc de çok uzun süre alacak,
Benim pc 32 bit win7, bu kodu 64 bit win üzerinde ya da linux üzerinde çalıştırsak anlamlı bir hız artışı olur mu?
Ya da fpga üzerine mi aktarmak lazım, elimde de2-70 kiti var, buradan daha hızlı mı olur?
Ya da hızlandırmak için herhangi bir önerisi olan var mı?
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: Kabil ATICI - 09 Nisan 2014, 12:43:49
Kaba kuvvete dayalı bir şifre çözme mantığı kullanarak;
paralel işlem.
Programını işlem yaptıracağın işlemci kartı veya bilgisayara göre parçalara ayır.
örneğin 1-100 1. modül, 101-200 2. modül ... gibi. (bu aralığı modül sayına göre belirlersin)
Her modül kendi bölümünü hesaplasın. Sonucu bulun modül diğerlerine ben buldum desin ve işlem sonucu ile birlikte sonlandırılsın.

İşletim sisteminin fazla bir etkisi olabileceğini sanmıyorum. Bazı yüksek hesap gerektiren işlerde grafik işlemcilerinin paralel kullanımı ile ilgili bazı makaleler okum ise de nasıl yapıldığını bilemiyorum...
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: MC_Skywalker - 09 Nisan 2014, 13:29:13
Bu işlem için FPGA tercih ediliyor.  özellikle şu sanal paraların kullandığı SHA256 algoritması için. 115K lık bir FPGA fit edilebiliyor.  daha ufağı 22K lık olanı başka bir sanal para var scrypt algoritmalı.

Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: SpeedyX - 09 Nisan 2014, 13:51:21
Paralel işlemle aralığı N kat parçalarsan, N kat hızlı sonuç alacağın kesin. Birden fazla core, birden fazla PC deneyebilirsin.

Kodu optimize etmeyi de deneyebilirsin, milyonlarca cycle kazandıracaktır. ASM ile yazabilirsin.

Arama algoritmalarını inceleyebilirsin, bazıları tüm aralığı taramıyor, 3 er 5 er gidiyor, denk gelme olasılığı var diye, aralık bitince, ofseti bir arttırıp yine 3 er 5 er deniyor.
Bazıları ortadan başlıyor sona doğru, sonra ortadan başa doğru gidiyorlar. Burada da denk gelme olasılığına göre yarı yarıya zaman kazanma şansı var.

Kimse 123456789 yada 888888888 gibi bir key kullanmıyor. Bu tarz keyleri boşuna denememek için wordlistler oluşturulmuş, brute force programları bu wordlistlerdeki keyleri deneme yoluyla şifre kırmaya çalışırlar.

Yöntem çok, hepsi boşuna işlem yapmamak, başka bir deyişle cycle kazanmak için düşünülmüşler.
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: speak48 - 09 Nisan 2014, 14:25:13
neymiş bu şifreli içerik
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: esensoy - 09 Nisan 2014, 15:28:46
Alıntı yapılan: speak48 - 09 Nisan 2014, 14:25:13
neymiş bu şifreli içerik
intel hex kodu
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: speak48 - 09 Nisan 2014, 15:30:57
içerik nekadar değerli
belki fpga ile birşeyler yapılabilinir.
hex dosyasının şifreli formatı varmış mı?
kim neyle şifrelemiş
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: esensoy - 09 Nisan 2014, 16:35:44
Hocam XTEA ile şifrelenmiş,
şifreli blok   ; 0x758320ECC673DBE6
şifresiz ascii ; 020000040000FA00
Değer mi =
* Fiyat verecekseniz fiyatınıza bağlı,
* Diğer türlü kendim iki gün üç gün bilemedin bir hafta uğraşıp kod yazıp, aleti kendi kendine bırakayım, 1 ayda çözsün, 2 ayda çözsün, değer,
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: Kabil ATICI - 09 Nisan 2014, 18:15:00
@speak48
Buradaki konu ile ne kadar ilgili bilemiyorum;
kullandığım Leadper10 programlayıcısının programında hex dosyalarını şifreleme olanağı vardı. Hex dosyası şifrelendikten sonra bir şekilde okunabilse de içerik düzgün görüntülenemiyordu.(şifreli olarak geliyordu) Ama program işlemci üzerinde çalışıyordu. O zaman için sadece 8051 serisinden olan AT89c52 işlemcileri üzerinde çalıştığımdan diğer işlemciler üzerinde ne yapıp yapmadığına emin değilim. Sanırım özellikle harici eprom kullanan kontroller için geliştirilmiş...
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: muuzoo - 09 Nisan 2014, 19:33:38
@esensoy , Elinizde bir c kodu varsa GPU uzerinde bruteforce deneyebilirim. Kodun durumuna gore CUDA ile paralellestirmeye calisabilirim. Cok acele mi?
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: kutahyaspor - 09 Nisan 2014, 19:55:40
@esensoy

Giriş:  020000040000FA00
Key:   xxxxx (maks. 16 karakter)
Çıkış: 37353833323045434336373344424536 (758320ECC673DBE6)  (32 karakter)

yanlış anlamadıysam durum bu. key harf, rakam, ascii karakteri vs. herşey olabilir. bu durumda brute force yıllar alır..


Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: esensoy - 09 Nisan 2014, 22:06:33
Alıntı yapılan: muuzoo - 09 Nisan 2014, 19:33:38
@esensoy , Elinizde bir c kodu varsa GPU uzerinde bruteforce deneyebilirim. Kodun durumuna gore CUDA ile paralellestirmeye calisabilirim. Cok acele mi?
Hocam acele değil, o dediğiniz nasıl oluyor?
Kod ilk mesajımda var zaten, oradaki v[0] ve v[1] giriş değişkeni,
Bu değişkeni şifreleyip çıktıyı bildiğimiz çıktı ile karşılaştırıyor,

Merak ettiğim başka bir şey daha var, bitcoin üretmek için irili ufaklı kartlar vs malzemeler var, bunlar üzerinde istenilen kod çalıştırılabiliyor mu acaba?

Alıntı yapılan: kutahyaspor - 09 Nisan 2014, 19:55:40
@esensoy

Giriş:  020000040000FA00
Key:   xxxxx (maks. 16 karakter)
Çıkış: 37353833323045434336373344424536 (758320ECC673DBE6)  (32 karakter)

yanlış anlamadıysam durum bu. key harf, rakam, ascii karakteri vs. herşey olabilir. bu durumda brute force yıllar alır..
yıllar alır,
doğru yıllar alır, biz de onu dedik zaten,
diyelim ki 8 yıl alır,
biri dese ki ;
x işlemcisi var, içinde 8 tane core var,
1 yıla düştü,
bu işlemciden de yan yana 12 tane dizdik,
bir aya düştü,
şimdi siz zaten söylediğimiz şeyleri boşverin de bilmediğimiz bir şey biliyor musunuz ondan bahsedin
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: muuzoo - 09 Nisan 2014, 22:37:34
Cep telefonundan girdigim icin kodu gormemisim. Yapilmak istenen uygulamaya gore uygulanabilirlik degisiyor. Su an ugrastigim bir algoritmada yaklasik 300 kat hizlanma sagladim. Bir baskasinda ise 4 kat. Yani degisken bir durum.
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: esensoy - 09 Nisan 2014, 22:40:57
Peki Bitcoin miner lar konusunda ne diyorsun?
Bir de bu gpu lar tek cekirdekli mi?
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: muuzoo - 09 Nisan 2014, 22:55:24
Alıntı yapılan: esensoy - 09 Nisan 2014, 22:40:57
Peki Bitcoin miner lar konusunda ne diyorsun?
Bir de bu gpu lar tek cekirdekli mi?

Bitcoin isi cok kafama yatan bisi degil ama cok ta bilgim yok acikcasi. Gecenlerde okudugum bir yazida su an bitcoin v.b. mining islemleri icin harcanan islem gucu dunyadaki sayili super bilgisayarlarin islem gucunden daha yuksek diyordu.

Gpu lardaki cekirdek kavrami cpu lardakinden farkli. Amd strem processor diye isim veriyor, nvidia ise cuda core diyor. Genel olarak gpu lardaki cekirdekler cpu lara nazaran daha basit daha gucsuz cekirdekler. O yuzden birim alana daha fazla cekirdek sigabiliyor. Literaturde buna tavuk-okuz (chicken vs ox) benzetmesi yapiyorlar. Bir arabayi cekmek icin okuz iyi bir secenek (cpu) ama yere dokulmis misir tanelerini toplayacaksaniz tavuklar (gpu core) en iyi secenek.

Mesela benim elimdeki Gtx 650 Ti Boost kartinda 768 cuda cekirdegi var ve bu kart $160 civarlarinda orta giris seviyesi bir kart.
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: MC_Skywalker - 09 Nisan 2014, 23:16:59
Bitcoin VHDL ile yazılmış sha-256 örneği ilginiz çekebilir RAM kullanımı yüksek olduğundan dolayı içinde RAM blok miktarı FPGA seçilmesinde fayda var.


-- ------------------------------------------------------------------------
-- Copyright (C) 2010 Arif Endro Nugroho
-- All rights reserved.
--
-- Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
--
-- 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-- 2. Redistributions in binary form must reproduce the above copyright   notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
--
-- THIS SOFTWARE IS PROVIDED BY ARIF ENDRO NUGROHO "AS IS" AND ANY EXPRESS
-- OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-- DISCLAIMED. IN NO EVENT SHALL ARIF ENDRO NUGROHO BE LIABLE FOR ANY
-- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-- POSSIBILITY OF SUCH DAMAGE.
--
-- End Of License.
-- ------------------------------------------------------------------------
--
-- MaxMessage  <= 2^64 bits
-- BlockSize   ==  512 bits
-- WordSize    ==   32 bits
-- MDigestSize ==  256 bits
-- Security    ==  128 bits
--
-- SHLnx  = (x<<n)
-- SHRnx  = (x>>n)
-- ROTRnx = (x>>n) or (x<<w-n)
-- ROTLnx = (x<<n) or (x>>w-n)
--
-- f0 = ((x and y) xor (not(x) and z))              --   Ch(x,y,z)
-- f1 = ((x and y) xor (x and z)  xor (y and z)     --  Maj(x,y,z)
-- f2 = ROTR  2(x) xor ROTR 13(x) xor ROTR 22(x)    --   Sigma0(x)
-- f3 = ROTR  6(x) xor ROTR 11(x) xor ROTR 25(x)    --   Sigma1(x)
-- f4 = ROTR  7(x) xor ROTR 18(x) xor SHR   3(x)    --   Tetha0(x)
-- f5 = ROTR 17(x) xor ROTR 19(x) xor SHR  10(x)    --   Tetha1(x)
--
-- h0 = 0x6a09e667
-- h1 = 0xbb67ae85
-- h2 = 0x3c6ef372
-- h3 = 0xa54ff53a
-- h4 = 0x510e527f
-- h5 = 0x9b05688c
-- h6 = 0x1f83d9ab
-- h7 = 0x5be0cd19
--
-- k[0-63] looks like better implemented in ROM file
--         with 32 bit in each contants it would take
--         64 x 32 bit storage which equal to
--            2048 bit ROM
--
-- Step 1
-- W(t) = M(t)                                                  0 <= t <=  15 -- we need 16x32 (512) bit registers
-- W(t) = f5(W(t-2)) + W(t-7) + f4(W(t-15)) + W(t-16);         16 <= t <=  79
-- W    = f5(W(  1)) + W(  6) + f4(W(  14)) + W(  15);         16 <= t <=  79
--
-- Step 2
-- a = h0; b = h1; c = h2; d = h3; e = h4; f = h5; g = h6; h = h7;
--
-- Step 3
-- for t 0 step 1 to 63 do
-- T1= h + f3(e) + f0(e, f, g) + k(t) + W(t)
-- T2=     f2(a) + f1(a, b, c)
-- h = g
-- g = f
-- f = e
-- e = d + T1
-- d = c
-- c = b
-- b = a
-- a = T1 + T2
--
-- Step 4
-- H0 = a + h0;
-- H1 = b + h1;
-- H2 = c + h2;
-- H3 = d + h3;
-- H4 = e + H4;
-- H5 = f + H5;
-- H6 = g + H6;
-- H7 = h + H7;
--
--  31 63 95 127 159 191 223 255 287 319 351 383 415 447 479 511
-- 0 32 64 96 128 160 192 224 256 288 320 352 384 416 448 480 512
--    0  1  2   3   4   5   6   7   8   9   a   b   c   d   e   f

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity sha256 is
  port(
  m                : in  bit_vector ( 31 downto 0); -- 32 bit data path require 16 clock to load all 512 bits of each block
  init             : in  bit;                       --    initial message
  ld               : in  bit;                       --    load signal
  md               : out bit_vector ( 31 downto 0); --    5 clock after active valid signal is the message hash result
--probe
--a_prb            : out bit_vector ( 31 downto 0);
--b_prb            : out bit_vector ( 31 downto 0);
--c_prb            : out bit_vector ( 31 downto 0);
--d_prb            : out bit_vector ( 31 downto 0);
--e_prb            : out bit_vector ( 31 downto 0);
--f_prb            : out bit_vector ( 31 downto 0);
--g_prb            : out bit_vector ( 31 downto 0);
--h_prb            : out bit_vector ( 31 downto 0);
--k_prb            : out bit_vector ( 31 downto 0);
--w_prb            : out bit_vector ( 31 downto 0);
--ctr2p            : out bit_vector (  3 downto 0);
--ctr3p            : out bit_vector (  5 downto 0);
--sc_pr            : out bit_vector (  1 downto 0);
--probe
  v                : out bit;                       --    hash output valid signal one clock advance
  clk              : in  bit;                       --    master clock signal
  rst              : in  bit                        --    master reset signal
  );
end sha256;

architecture phy of sha256 is

  component c4b
    port (
    cnt            : out bit_vector (  3 downto 0);
    clk            : in  bit;
    rst            : in  bit
    );
  end component;

  component c6b
    port (
    cnt            : out bit_vector (  5 downto 0);
    clk            : in  bit;
    rst            : in  bit
    );
  end component;

  component romk
    port (
    addr           : in  bit_vector (  5 downto 0);
    k              : out bit_vector ( 31 downto 0)
    );
  end component;

  signal   ih      :     bit_vector ( 31 downto 0);
  signal   h0      :     bit_vector ( 31 downto 0);
  signal   h1      :     bit_vector ( 31 downto 0);
  signal   h2      :     bit_vector ( 31 downto 0);
  signal   h3      :     bit_vector ( 31 downto 0);
  signal   h4      :     bit_vector ( 31 downto 0);
  signal   h5      :     bit_vector ( 31 downto 0);
  signal   h6      :     bit_vector ( 31 downto 0);
  signal   h7      :     bit_vector ( 31 downto 0);

  signal   k       :     bit_vector ( 31 downto 0);

  signal   im      :     bit_vector ( 31 downto 0);
  signal   iw      :     bit_vector ( 31 downto 0);
  signal   w       :     bit_vector ( 31 downto 0); -- current working register
  signal   w0      :     bit_vector (511 downto 0); -- working register 1

  signal   a       :     bit_vector ( 31 downto 0); -- a register
  signal   b       :     bit_vector ( 31 downto 0); -- b register
  signal   c       :     bit_vector ( 31 downto 0); -- c register
  signal   d       :     bit_vector ( 31 downto 0); -- d register
  signal   e       :     bit_vector ( 31 downto 0); -- e register
  signal   f       :     bit_vector ( 31 downto 0); -- f register
  signal   g       :     bit_vector ( 31 downto 0); -- g register
  signal   h       :     bit_vector ( 31 downto 0); -- h register

  signal   f0      :     bit_vector ( 31 downto 0);
  signal   f1      :     bit_vector ( 31 downto 0);
  signal   f2      :     bit_vector ( 31 downto 0);
  signal   f3      :     bit_vector ( 31 downto 0);
  signal   f4      :     bit_vector ( 31 downto 0);
  signal   f5      :     bit_vector ( 31 downto 0);

  signal   ctr2    :     bit_vector (  3 downto 0); --  4  bit counter (zero to  16)
  signal   ctr2_rst:     bit;
  signal   ctr3    :     bit_vector (  5 downto 0); --  6  bit counter (zero to  64)
  signal   ctr3_rst:     bit;

  signal   vld     :     bit;
  signal   nld     :     bit;
  signal   ild     :     bit;
  signal   ild_rst :     bit;

begin

  ct2              : c4b
  port map (
  cnt              => ctr2,
  clk              => clk,
  rst              => ctr2_rst
  );
  ct3              : c6b
  port map (
  cnt              => ctr3,
  clk              => clk,
  rst              => ctr3_rst
  );
  rom0             : romk
  port map (
  addr             => ctr3,
  k                => k
  );

--probe signal
--a_prb            <= a;
--b_prb            <= b;
--c_prb            <= c;
--d_prb            <= d;
--e_prb            <= e;
--f_prb            <= e;
--g_prb            <= e;
--h_prb            <= e;
--k_prb            <= k;
--w_prb            <= w;
--ctr2p            <= ctr2;
--ctr3p            <= ctr3;
--probe signal

--persistent connection

--f0               == ((x and y) xor (not(x) and z))                      -- f0(e, f, g)
  f0               <= ((e and f) xor (not(e) and g));
--f1               == ((x and y) xor (x and z) xor (y and z)              -- f1(a, b, c)
  f1               <= ((a and b) xor (a and c) xor (b and c));
--f2               == ROTR  2(x)  xor ROTR 13(x) xor ROTR 22(x)           -- f2(a)
  f2               <= (a (  1 downto   0) & a ( 31 downto   2)) xor
      (a ( 12 downto   0) & a ( 31 downto  13)) xor
      (a ( 21 downto   0) & a ( 31 downto  22));
--f3               == ROTR  6(x)  xor ROTR 11(x) xor ROTR 25(x)           -- f3(e)
  f3               <= (e (  5 downto   0) & e ( 31 downto   6)) xor
      (e ( 10 downto   0) & e ( 31 downto  11)) xor
      (e ( 24 downto   0) & e ( 31 downto  25));
--f4               == ROTR  7(x)  xor ROTR 18(x) xor SHR   3(x)           -- w0(479 downto 448)
  f4               <= (w0(454 downto 448) & w0(479 downto 455)) xor
                      (w0(465 downto 448) & w0(479 downto 466)) xor
                      (B"000"             & w0(479 downto 451));
--f5               == ROTR 17(x)  xor ROTR 19(x) xor SHR  10(x)           -- w0( 63 downto  32)
  f5               <= (w0( 48 downto  32) & w0( 63 downto  49)) xor
                      (w0( 50 downto  32) & w0( 63 downto  51)) xor
      (B"0000000000"      & w0( 63 downto  42));

  with ctr2( 2 downto 0) select -- omit bit 4
  ih               <= h0                                      when B"000",
                      h1                                      when B"001",
                      h2                                      when B"010",
                      h3                                      when B"011",
                      h4                                      when B"100",
                      h5                                      when B"101",
                      h6                                      when B"110",
                      h7                                      when B"111";

--W                == f5(W(  1)) + W(  6)             + f4(W(  14)) + W(  15);             16 <= t <=  79
--iw               <= f5         + w0(223 downto 192) + f4          + w0(511 downto 480); -- FIXME this adder is very costly and NOT A PORTABLE CODE
  iw               <= to_bitvector(std_logic_vector( unsigned(to_stdlogicvector(f5)) + unsigned(to_stdlogicvector(w0(223 downto 192))) + unsigned(to_stdlogicvector(f4)) + unsigned(to_stdlogicvector(w0(511 downto 480))) ));

  process (clk)
  begin
    if ((clk = '1') and clk'event) then
      if    (rst = '1') then
        w          <= (others => '0');
        w0         <= (others => '0');
      elsif (nld = '1') then                                              -- 0 <= t <= 15 first 512 bit block
        w          <=              im;
  w0(511 downto 0) <= (w0(479 downto  0) & im);
      else
        w          <=  iw( 31 downto   0)                      ;
  w0(511 downto 0) <= (w0(479 downto   0) & iw( 31 downto   0));
      end if;
    end if;
  end process;

  process (clk)
  begin
    if ((clk = '1') and clk'event) then
      if (rst = '1') then
        ild        <=  '0';
nld        <=  '0';
im         <= (others => '0');
      else
        ild        <=  nld;
nld        <=   ld;
im         <=    m;
      end if;
    end if;
  end process;

  process (clk)
  begin
    if ((clk = '1') and clk'event) then
      if ((ild_rst or rst) = '1') then
        vld        <=  '0';
      elsif (ctr3 = B"111111") then
        vld        <=  '1';
      else
        vld        <=  '0';
      end if;
    end if;
  end process;

  ild_rst          <= (ild xor ld) and ld;
--ctr2_rst         <=  ild_rst     or rst or vld or (ctr2 = B"0111");     -- set to count to  7 (  8 clock)
  ctr2_rst         <=  ild_rst     or rst or vld or not(ctr2(3) or not(ctr2(2)) or not(ctr2(1)) or not(ctr2(0)));
  ctr3_rst         <=  ild_rst     or rst;-- (ctr3 = B"010011");          -- set to count to 63 ( 64 clock)

  process (clk)
  begin
    if ((clk = '1') and clk'event) then
      if (init = '1')  or (rst = '1') then
        h0         <= X"6a09e667";
        h1         <= X"bb67ae85";
        h2         <= X"3c6ef372";
        h3         <= X"a54ff53a";
        h4         <= X"510e527f";
        h5         <= X"9b05688c";
        h6         <= X"1f83d9ab";
        h7         <= X"5be0cd19";
      elsif (vld = '1') then -- FIXME this adder is very costly and NOT A PORTABLE CODE
        h0         <= to_bitvector(std_logic_vector( unsigned(to_stdlogicvector(a)) + unsigned(to_stdlogicvector(h0)) ));
        h1         <= to_bitvector(std_logic_vector( unsigned(to_stdlogicvector(b)) + unsigned(to_stdlogicvector(h1)) ));
        h2         <= to_bitvector(std_logic_vector( unsigned(to_stdlogicvector(c)) + unsigned(to_stdlogicvector(h2)) ));
        h3         <= to_bitvector(std_logic_vector( unsigned(to_stdlogicvector(d)) + unsigned(to_stdlogicvector(h3)) ));
        h4         <= to_bitvector(std_logic_vector( unsigned(to_stdlogicvector(e)) + unsigned(to_stdlogicvector(h4)) ));
        h5         <= to_bitvector(std_logic_vector( unsigned(to_stdlogicvector(f)) + unsigned(to_stdlogicvector(h5)) ));
        h6         <= to_bitvector(std_logic_vector( unsigned(to_stdlogicvector(g)) + unsigned(to_stdlogicvector(h6)) ));
        h7         <= to_bitvector(std_logic_vector( unsigned(to_stdlogicvector(h)) + unsigned(to_stdlogicvector(h7)) ));
--      h0         <=      a + h0;
--      h1         <=      b + h1;
--      h2         <=      c + h2;
--      h3         <=      d + h3;
--      h4         <=      e + h4;
--      h5         <=      f + h5;
--      h6         <=      g + h6;
--      h7         <=      h + h7;
      end if;
    end if;
  end process;

  process (clk)
  begin
    if ((clk = '1') and clk'event) then
      if ((ild_rst or rst) = '1') then
        a          <= h0;
        b          <= h1;
        c          <= h2;
        d          <= h3;
        e          <= h4;
        f          <= h5;
        g          <= h6;
        h          <= h7;
       else -- FIXME this adder is very costly and NOT A PORTABLE CODE
--      T1         == h + f3(e) + f0(e, f, g) + k(t) + W(t)
--      T2         ==     f2(a) + f1(a, b, c)
        h          <=  g;
        g          <=  f;
        f          <=  e;
-- e          <=  d +          T1        ;
--      e          <=  d + h + f3 + f0 + k + w;
        e          <= to_bitvector(std_logic_vector( unsigned(to_stdlogicvector(d)) + unsigned(to_stdlogicvector(h)) + unsigned(to_stdlogicvector(f3)) + unsigned(to_stdlogicvector(f0)) + unsigned(to_stdlogicvector(k)) + unsigned(to_stdlogicvector(w)) ));
        d          <=  c;
        c          <=  b;
        b          <=  a;
-- a          <=             T1           +    T2  ;
--      a          <=      h + f3 + f0 + k + w + f2 + f1;
        a          <= to_bitvector(std_logic_vector( unsigned(to_stdlogicvector(h)) + unsigned(to_stdlogicvector(f3)) + unsigned(to_stdlogicvector(f0)) + unsigned(to_stdlogicvector(k)) + unsigned(to_stdlogicvector(w))  + unsigned(to_stdlogicvector(f2)) + unsigned(to_stdlogicvector(f1)) ));
      end if;
    end if;
  end process;

  md               <=  ih;
  v                <=  vld;

end phy;
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: kutahyaspor - 10 Nisan 2014, 08:57:00
key içeriğinin 16 haneli ve sadece rakamlardan oluştuğunu varsayalım. (ben olsam mutlaka harf, nokta, virgül vs. kullanırdım)

10000000000000000 farklı keyimiz var.
saniyede 10000000 key deneyebildiğimizi varsayalım (elinizde kesin bir rakam varsa ona göre hesaplanır.)
10000000  x 60 x 60 x 24 x 365 = 315360000000000  bir yılda bu kadar key deneyebiliriz.
bu da yaklaşık 30 yıl eder.  harf ve ascii karakter kullanılmadığını da bilmiyoruz. elde keyin içeriğine dair başka bir ipucu olmadığı sürece, bence bu işlem imkansız.

kolay gelsin.
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: esensoy - 10 Nisan 2014, 09:48:48
Alıntı yapılan: kutahyaspor - 10 Nisan 2014, 08:57:00
key içeriğinin 16 haneli ve sadece rakamlardan oluştuğunu varsayalım. (ben olsam mutlaka harf, nokta, virgül vs. kullanırdım)

10000000000000000 farklı keyimiz var.
saniyede 10000000 key deneyebildiğimizi varsayalım (elinizde kesin bir rakam varsa ona göre hesaplanır.)
10000000  x 60 x 60 x 24 x 365 = 315360000000000  bir yılda bu kadar key deneyebiliriz.
bu da yaklaşık 30 yıl eder.  harf ve ascii karakter kullanılmadığını da bilmiyoruz. elde keyin içeriğine dair başka bir ipucu olmadığı sürece, bence bu işlem imkansız.

kolay gelsin.

Bu algoritmayı n parçaya bölsem ve bir program oluştursam,
Nette de desem ki ey nvidia cudaminer lar, bu programı çalıştırın bitcoinden kazandığınızın x katını vereceğim size,
Kaç kişi bulurum??

Ya da desem ki hadi xtea şifre kırıp caka satacağız, voltran ı oluşturalım, kaç kişi gelir?

Ben sizin ya da sizden önce bana "imkansız" demişlerin laflarına zaten kulak asmıyorum da, umarım bu örnekler düşünce sisteminizi açmaya yardımcı olur,
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: MC_Skywalker - 10 Nisan 2014, 10:07:58
@esensoy  eğer bu işi FPGA ile yapacaksan elimde ki kartlardan (Cyclone IV EP4C10F17CN8) birini senin bu işin için kullanabilirim.

http://imageshack.com/a/img42/8643/4gwx.jpg (http://imageshack.com/a/img42/8643/4gwx.jpg)
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: esensoy - 10 Nisan 2014, 10:32:04
Hocam eldeki pcleri karıştırırken köşede duran laptopta cuda uyumlu 310M ekran kartı olduğunu farkettim,
https://developer.nvidia.com/cuda-gpus (https://developer.nvidia.com/cuda-gpus)
Bu sayfada Compute Capability olarak 1.2 vermiş, anlaşılıyor ki deneme amaçlı kullanılabilir,

Kodu vhdl ya da verilog a çabukça çevirebilecek kadar iyi olmadığımı düşünüyorum, biraz vakit alacak,
CUDA lar ise bildiğin C ile çalışıyor, o sebepten önceliğim ekran kartında denemek,
Nezaketiniz için yine de teşekkür ederim, FPGA tarafını da denemeye kalkarsam mutlaka iletişime geçerim sizinle,
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: MC_Skywalker - 10 Nisan 2014, 10:38:24
bu işler için AMD(ATI) kartlar daha çok tercih ediliyor.  paralel işlem üniteleri Nvidia GPUlardan daha fazla.  OpenCL  ile progam geliştiriyorlar.

1 adet GTX580, 1 adet Radeon HD5450 de var.

programda GPU yu mutlaka termal olarak izleyin cudaminer çalışırken ortalama 80C GPU sıcaklığı görüyorum. bir müddetsonra kasadan jet türbini gibi ses gelmeye başlıyor. :)
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: muuzoo - 10 Nisan 2014, 12:07:39
Alıntı yapılan: MC_Skywalker - 10 Nisan 2014, 10:38:24
bu işler için AMD(ATI) kartlar daha çok tercih ediliyor.  paralel işlem üniteleri Nvidia GPUlardan daha fazla.  OpenCL  ile progam geliştiriyorlar.

1 adet GTX580, 1 adet Radeon HD5450 de var.

programda GPU yu mutlaka termal olarak izleyin cudaminer çalışırken ortalama 80C GPU sıcaklığı görüyorum. bir müddetsonra kasadan jet türbini gibi ses gelmeye başlıyor. :)

Hocam soyle bir duzeltme yapmak istiyorum Amd kartlardaki paralel islem unitelerinin fazla olmasi yuzunden degil de bit bazlı işlemleri daha kisa surede yapmasindan kaynakli bir fark var. Yoksa nvidia nin da 3000 civarinda cekirdek iceren kartlari da var.

Aslinda tum mesele kodunuzun ekran karti mimarisine gore ne olcude iyi yazildigina bagli. Ayni isi yapan 2 kod arasinda 20-30 katlik farklar gorebilirsiniz.

Bunun bariz bir ornegi cuda miner mesela eski versiyonu ile 100k-105k hash aldiginiz karttan sadece yazilimla 190k hash almaya basliyorsunuz. İster Amd olsun ister nvidia , kodun nasil yazildigi onemli.
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: MC_Skywalker - 10 Nisan 2014, 13:32:40
benim okuduğum bir forumda böyle bir beyanda bulunmuşlar. konuyu tekrar araştırayım.

birde kullandığınız havuz önemli.  Cuda miner GTX580 için 200-256Kh değer gösterirken, havuzun gösterdiği değer 180-190Kh görünüyor.



Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: speak48 - 10 Nisan 2014, 14:33:36
kim hangi programla neiçin şifrelemiş
hex codu nerde kullanılacak
hex codu bootmu ediliyor yoksa direct flashamı yazılıyor.
birazdaha bilgi işleri kolaylaştırır.
peki şifresiz kısmını nerden biliyorsunuz.

Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: speak48 - 16 Nisan 2014, 10:34:03
70k ya 10core pipeline koydum zorlasam 15 sığar.
100 mhzde her 2 clokta bir şifre dener  saniyede 500*10^6 tane şifre dener
ama bu bile süreyi pek düşüremedi 1000 yıllar alacak.


https://www.mediafire.com/?4dr1vd4pz20vcd3 (https://www.mediafire.com/?4dr1vd4pz20vcd3)
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: MC_Skywalker - 16 Nisan 2014, 13:27:54
10K sığan versionu var ise boştaki karta denemek için yüklerim. (Cyclone IV EP4C10F17CN8)
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: speak48 - 16 Nisan 2014, 15:04:12
tek bir core pipeline16round 5k.
ayrıca tek core la ne bulucan.
tek core saniyede 50M şifre dener
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: Elektroemre - 31 Mayıs 2014, 13:18:07
@esensoy hocam var mı bir gelişme?  :)
Başlık: Ynt: XTEA şifre kırma, key bulma
Gönderen: speak48 - 31 Mayıs 2014, 16:40:27
siz parayı dökün
bulun bana
en büyük fpga serisinden 1000-2000 tane falan
olacak gelişmeyi söyliyelim