查看: 17743|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    : Z/ v# F  N1 C" V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig& c' \" ]4 j; E) A7 J6 p
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:) m: L) f7 }. K" j% r: C6 ~
usage: himr <address> <value>. sample: himr 0x80040000 0x0
& x! @. D% Q7 I( a' c
  v0 B- d7 G% A: d8 r
; v: W/ b. x2 K. |7 [. ?0 J6 I) N不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  ?4 b: u! v: s, u8 B/ v/ o( K
7 Y1 q  S' r7 j5 h0 e# B' s( D补充内容 (2012-3-8 09:42):- ?# f) [6 K) R( Y% ^  V  n
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数6 G) z! K  k# v. Y. T
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。( x( f& L+ k) R- S- R2 \* G' ^% P

4 H; O( P$ z4 bhimr <address> <value>. sample: himr 0x80040000 0x0- V3 x% g+ Q  z0 O% s8 }0 }5 L
! q0 _" x4 K. t8 b% w
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
/ ^/ ]5 W* B- i2 [himr 0x80040000 0x00% T/ P; `4 w( v; B' @5 I8 q7 T
himr 0x80040001 0x11
" F7 @$ h9 E8 a1 ?+ D* @himr 0x80040002 0x228 r7 D# e! `, d6 y/ @0 s+ p3 Z' j
himr 0x80040003 0x33
$ r( K% ?8 e1 S2 e0 _himr 0x80040004 0x441 @% B0 k5 [1 _" K
himr 0x80040005 0x55
% S- W/ V) ]# U
2 ~5 X$ ~) z$ w; s# X3 B9 cSN也是类似。3 K4 }# z6 Q% F& [0 q( d
) V+ S; |( `5 t# Z/ W
现在主要是,谁告诉我们MAC和SN的地址?6 V+ H7 L8 W+ `# X  ~6 G1 r
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 " N: b% ?( _( Z8 Z2 @7 `
一直想找到运程修改MAC和SN的办法,苦于无解啊

5 d: ~4 }& O9 r5 s/ B源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 / J( f6 k, c# z* J' `/ q
, X- V; C9 o1 [. B% _
修改的代码早有了。到今天不会编译。- o; g  k3 S8 K2 l
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>& q8 c4 `# k2 l3 E
  2. #include <malloc.h>
    , Q( u( G# V8 D& m% B! [
  3. #include <sys/types.h>+ k/ @2 m1 W2 D* {+ r
  4. #include <sys/stat.h>* U8 L' o& |2 R9 _
  5. #include <sys/ioctl.h>
      n5 o' O% f4 e) n% s' _( `, ^
  6. #include <stdio.h>
    ! i, V. a7 t) h2 \
  7. #include <string.h>2 p; O8 E6 @& P& P4 L
  8. # l# s# [! \- {- y2 Z
  9. typedef struct {
    / Y% f# j+ u1 m& S% i$ z4 H. P
  10.         unsigned int        e2prom_cmd_sub_addr;7 C9 l! E2 x) G; d
  11.         unsigned int        sub_addr_count;1 b  O' O/ x$ s4 \9 v
  12.         unsigned char*        e2prom_cmd_data;
    ( M3 _9 x7 g0 }- A7 W" _
  13.         unsigned int        data_count;& ?6 H2 @. }6 M/ I8 W
  14. } e2prom_s_cmd;3 b  C, `0 }9 U" f

  15. : {5 m# ]  {" r- G
  16. #define E2PROM_CMD_READ 1- X; v6 ^0 K% }, x) o+ \: }
  17. #define E2PROM_CMD_WRITE 2
    ' C3 D" b. q2 R
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"& {4 y+ R8 `2 e  P

  19. 2 z6 ?% y' U% u* t/ Y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    5 K, ], C. P2 D7 b0 `4 ~% E
  21. {
    $ j* a/ F  a% h& j' ]4 Q
  22.         int fd, ret;
    7 g6 M) v' ?! Q/ c$ j/ f% H
  23.         e2prom_s_cmd arg;+ r- ^6 Y6 ~2 m( v
  24.         unsigned char buf[0x18];% n' i7 f: L) J  U
  25. 2 H3 W0 z8 f  x5 }6 p) |* h. \
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' b$ z. i$ j* v3 E: f* P1 o, Y
  27.         if (fd  < 0) {5 j# U: J& u. Y2 ?
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);- h6 ?6 X0 A+ c+ t
  29.                 return -1;
    ) ^9 |- k& g4 Y4 D
  30.         }
    - ~: O& v) @# ]( l
  31.         arg.sub_addr_count      = 2;
    2 y& s; n! u3 H. X- s+ M7 C; ]
  32.         arg.data_count          = 0x18;' ~( [) c& x! ~$ m; B- m
  33.         arg.e2prom_cmd_sub_addr = 0x290;% p0 {2 ~: J" ^" Y( t7 J: u) @* ~
  34.         arg.e2prom_cmd_data     = buf;
    3 D. W- L' p/ O# B
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    6 ^9 l- G0 |! ~% k. C; a
  36.         if (ret != 0) {9 i2 C) v, ]& G$ n% V
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);  p- @% F+ m* I4 S# k
  38.                 return -1;
    5 q- R' s- y& {- S+ z$ ~7 a
  39.         }7 ~: M" s$ g1 f) y& S: g/ C
  40.         memcpy(mac, buf, 6);
    0 y6 m7 F( U1 J4 u( h1 L8 V
  41.         memcpy(stbid, &buf[6], 18);% O, @# m( a6 q! ~  g
  42.         stbid[18] = '\0';
      R: @: J" s& d7 ^- m" H

  43. $ d# z( P$ q+ A1 l2 T
  44.         return 0;( x3 Z6 M5 d( \) N* `$ w
  45. }
    . I9 O6 N" N/ Y' g/ W* g! u
  46. 0 j& K; k% ^" p+ C1 h* b
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    9 e2 i7 K( G8 p
  48. {
    ( p! x, Y- ?0 ]6 z- n; {
  49.         int fd, ret;; F. k) ~2 R/ F/ Q# [: C
  50.         e2prom_s_cmd arg;
    # }  l& W- X& y
  51.         unsigned char buf[0x18];: e( Y4 m2 z! a
  52. * `' N  E% B7 Y* i) {
  53.         memcpy(buf, mac, 6);
    1 Y' d7 p% c; p/ @5 y
  54.         memcpy(&buf[6], stbid, 18);$ }  B1 _( ]; Z$ h2 B+ n' @5 {1 }6 L
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; J0 q3 X- ^( E& r2 }
  56.         if (fd  < 0) {
    , c+ v  O9 B' O3 C
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! w' Z0 Y7 j8 G; y9 d+ D
  58.                 return -1;
    + X" I  j2 y) ~% s/ \% t
  59.         }' s- d& v/ [0 r1 Q
  60.         arg.sub_addr_count      = 2;
    , V- Q! {0 s9 [2 W" e$ P/ [( H
  61.         arg.data_count          = 0x18;
    , W  P# A4 l  i  a( ?
  62.         arg.e2prom_cmd_sub_addr = 0x290;) C) z3 e; R: K4 X0 ^9 H! d
  63.         arg.e2prom_cmd_data     = buf;
    # m! c* Q+ R: E; P( b& r
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ! Z2 |6 t0 m. i; N* s0 m
  65.         if (ret != 0) {
    . _2 C) F) h6 ]* [& n. C' T: b
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    % e+ r5 V6 b7 a! M/ \* L
  67.                 return -1;
    + g+ ~7 k8 t% U& U* s. {: V1 R
  68.         }% [3 B+ r2 f2 O
  69. ( U3 G. d5 }3 c5 ]* K" ?
  70.         return 0;; l4 V- f7 _5 v0 g
  71. }' `1 M8 O; ]' F0 o" o! F( E# G
  72.   @: ?& }. Y( }; D* D' }- n
  73. int main()/ {; f0 s4 P3 r0 I" t
  74. {: f, }9 |( J9 ^7 q  _( C5 n% V
  75.         char c;
    % F2 n) E) s0 W* ~/ T$ z
  76.         int i, macs[6];0 |, b. C, L+ @; o; U
  77.         unsigned char mac[6];! @$ z6 ?* z, r1 B& W1 c
  78.         unsigned char stbid[256];8 k* r+ |: t) M( O% l/ q

  79. ' V: p0 C+ K& X! k5 C9 L; L6 }- G4 R/ N
  80.         if (readparam(mac, stbid) < 0)
    8 O4 t8 ?. o8 e: j8 I, i% l7 R
  81.                 return 1;0 R. k' s( G0 R4 W
  82. ( A! ]0 a( N! b1 k7 }+ g
  83.         printf("Current parameters: \n");
    4 V$ k) \4 a6 @, \" k5 f
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( U4 l. ?3 D5 j4 f3 b; H
  85.         printf("  STBID: %s\n", stbid);
    - {' c& V2 a7 u! c6 ]$ A
  86.         6 q9 H, `- E+ F/ C
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    : _8 l, J  ?7 x) t
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    5 D7 F; b, b- V5 F* L% q" V* H3 u
  89.                 printf("Input MAC error\n");* @, _7 p5 h5 c( c: g$ d9 R
  90.                 return 1;4 Q) S7 p- a8 Q( w* W: i
  91.         }
    9 \! p: N, T" D( Y: M6 w
  92.         for (i=0; i<6; i++)mac[i] = macs[i];& _2 r" m% D8 T1 Z) {1 h
  93.         printf("\nPlease input new STBID: ");- C% i! r0 Y! ]8 Z+ H
  94.         scanf("%s", stbid);
    ; E: {1 O+ Q# d4 r/ D
  95.         if (strlen(stbid) != 18) {; E+ w* X- b) s3 J- K
  96.                 printf("Invalid stbid\n");  i$ c/ {, S! u4 w* M
  97.                 return 1;
    - Z1 I! G, B' N6 _3 y4 t
  98.         }* v% c4 |. O' H8 U  I2 a$ G
  99.         printf("\nNew parameters: \n");* V; q) @8 E4 z9 ?5 G$ T- a
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % w/ y1 m. N$ w2 h" `
  101.         printf("  STBID: %s\n", stbid);
    + a7 o* B$ x+ u9 [8 O% x
  102. 3 C$ W/ l$ t9 l3 z4 l$ X5 r
  103.         printf("\nDo you want to change paramemters? (y/N) ");  k4 X6 Q2 w+ F0 O% w
  104.         for (;;) {
    ( `# }9 O" }$ L4 f, ^0 }
  105.                 c = getchar();
    % |, |- i, U) r. [; N
  106.                 if (c == 'y' || c == 'Y')) ^- x* U% @$ \( [% m: V
  107.                         break;
    : C! _1 Z; V- R3 K$ @+ ?
  108.                 if (c == 'n' || c == 'N') {
    + y1 ^: {& \1 C/ ?" i& l9 H; S
  109.                         printf("\nAborted.\n");" F5 q% B/ {+ C& z8 P- _; t! j" S
  110.                         return 1;
    . R) n% g9 V& u3 f& o
  111.                 }
    " v0 S, X1 b, {. O
  112.         }
    + c0 ^7 f& q$ O% y  B5 L$ n9 O$ S
  113.         if (writeparam(mac, stbid) == 0)
    * f7 V" t8 y1 q" A4 w
  114.                 printf("Parameters changed.\n");
    : c. l6 `" e% L* T% a% F+ `
  115. 3 T7 D5 k1 r8 S$ i! Y# O5 t5 C
  116.         return 0;4 d$ b& I2 H) \3 d, g: e
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 |福建| 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 |浙江| 显示全部楼层
0522 发表于 2012-3-23 18:24
. r# i1 j5 U3 M' t8 N在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

! c0 P# c: s6 m# p你用的编译命令行格式是什么?3 X( C$ p- `4 p& u
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部