Canon eosファームウェアソース

多くの人は、先日キヤノンの内部ネットワークがハッキングされたこと、そしてとりわけ、EOSシリーズカメラファームウェアのカーネルソースコードの一部がネットワークに漏洩したことを既に聞いていました。

/*
CANON D-SLR cameras core routine
Property of CANON INC. 1998-2010
    
v 1.0 made by Radja Tokamoto Goines
v 1.1 made by Dugwin Yakioto jr.
    
last changes: 10.11.2009
*/

#include <stdlib.h>
#include <math.h>
#include <time.h>

#include "inc/tweakfocus.h"
#include "inc/radja_filters.h"


bool do_focus(lens, camera) {
double fp;
time_t t;

t = init_focus_timer(t);

do {
fp = measure_focus_point(lens);
move_focus(lens, fp)

if (timeout(t))
return false ;

} while (!lens.is_focused());

if (!L_LensDetected(lens))
lens.adjust_focus(rand(10));

return true ;
}

rawdata * scandata(matrix, lens, camera) {
rawdata *cr;
double noise, aberrations;

cr = create_cr(matrix);

read_exif_info(cr->exif, lens, camera);

prepare_everything(matrix, lens, camera);

if (!do_focus(lens, camera))
return NULL;
else
beep();

aberrations = pow(100 - lens.focallength, 2) * sqrt(2) + 10;

if (L_LensDetected(lens))
aberrations /= 2.0;

scan_sensor(cr, matrix, aberrations);

noise = matrix.iso / 100.0;
noise *= matrix.cropfactor;

if (camera.model == EOS1000D) {
noise *= 1.2;
wait_for_something();
}

if (camera.model != EOS7D)
wait_for_something();

if (lens.manufacture != CANON_LENS) {
corrupt_something(cr);
apply_random_filter(cr);
}

if (lens.model == EF_50_F1_4) {
noise /= 1.2;
apply_fcb(cr); //fucken cool bokeh
}

if (lens.model == CANON_L_17_40_F4) {
blur(cr, 0.8);
distort(cr, 40 - lens.focallength);
}

radja_filter(cr, 1.570796326794896619231321691641); //don't touch that!

if (is_eos1d_series(camera.model))
disable_all_spoiling(cr);
else
make_nice_colors(cr);

// finally...
apply_noise(cr, noise);

apply_barrel_distortion(cr, lens);
apply_pillow_distortion(cr, lens);

return cr;
}


PS私の著者。


Source: https://habr.com/ru/post/J74958/


All Articles