查看: 16870|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    . L1 n2 Q: r# }. H. Q8 g- v+ C
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' T" v3 C7 w" W  _7 k. M$ |
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:1 b3 z2 T3 K0 ^% D# A( p
usage: himr <address> <value>. sample: himr 0x80040000 0x0
# X9 y) D) i) V' q0 S0 x) I5 w1 E* l
" I( O$ {) H2 \9 o* {. _/ {2 P& o" b- i$ ^. F8 i
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ ?5 u% m- R9 J9 t7 k& `) p2 c0 T! H% Y# Q* ^
补充内容 (2012-3-8 09:42):
9 v- J3 W2 [1 m- ?  G9 ]http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数$ b4 G8 w! D7 G4 C5 o, k2 v
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
0 V# U, H( B  @0 a/ l% o8 d7 X4 H6 H. k$ ~
himr <address> <value>. sample: himr 0x80040000 0x02 {- i1 T: j0 G8 F5 I5 Q& F
/ z, U$ `" w7 i) W. o, b! ^
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。8 x; T4 Y* C; Z1 S7 ?) M. I! ]" l
himr 0x80040000 0x00: r/ P; }/ a$ ~2 w2 Z0 Z
himr 0x80040001 0x11! O. H  f* W8 g- K0 M( O+ H
himr 0x80040002 0x22- Y5 z( |. u9 ]* T) J5 e
himr 0x80040003 0x33
, a3 j) L. I6 ], @# ahimr 0x80040004 0x444 Z7 \6 M# ?: \. I/ H) g
himr 0x80040005 0x55
% L# b; C+ ~$ L/ l
4 X5 D3 m! {4 [1 M! l( I5 CSN也是类似。
+ {. Q% |& j9 T& \3 G+ A& Z+ d
* k) h( F( C3 S- v现在主要是,谁告诉我们MAC和SN的地址?1 f' L* m% Y  y) X( N
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 + o; D% [' [# I3 N
一直想找到运程修改MAC和SN的办法,苦于无解啊

  l5 I7 i5 C+ v; I: }' h8 d: ]源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
% F9 L3 x& X" L' v0 S! R. z& F+ r! c! Z, Y6 ], _9 k
修改的代码早有了。到今天不会编译。
8 R) t* ]& _1 h8 y% Y7 n需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>( y& p6 J! v7 U6 M5 L0 m; a* H5 |
  2. #include <malloc.h>
    % ?  d3 L- s( w3 U1 W9 {4 k
  3. #include <sys/types.h>
    $ F0 _$ o/ F0 ?  Y& P  ^$ z
  4. #include <sys/stat.h>
    * k, E8 k  [8 ?8 _0 u8 N
  5. #include <sys/ioctl.h>
    , H7 V& x5 D1 l% x7 I; y
  6. #include <stdio.h>
    # N4 p9 A; q1 k9 r: j# g9 L
  7. #include <string.h>1 n6 k! k! S+ d& ]+ q$ F# y
  8. " g' b, P1 n. R! C' g: p2 l- y* a. |
  9. typedef struct {
    % g3 Z/ N% |1 Y4 t
  10.         unsigned int        e2prom_cmd_sub_addr;
    . ~2 W" Q. J0 k5 {7 c1 F
  11.         unsigned int        sub_addr_count;3 t2 X3 {% \- D& O% U0 k$ ]6 q
  12.         unsigned char*        e2prom_cmd_data;) r8 z' T3 H0 ?
  13.         unsigned int        data_count;
    7 J% c3 D! D- I, S
  14. } e2prom_s_cmd;
    0 I) u$ O0 j' v  S4 A

  15. # b$ \  N* P5 [; ?& q2 U" b, y& k9 E
  16. #define E2PROM_CMD_READ 1# J( o* |) [3 p: g: b" Q
  17. #define E2PROM_CMD_WRITE 26 G/ T4 t1 B& _) h% V9 f
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    9 a6 s( O. N. x* q+ X
  19. / g6 F  h1 t! W* B" k$ }% V9 Y( x
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    # u/ j0 D' o* _
  21. {
    7 V: q7 {+ w: l' Q8 i9 L3 [
  22.         int fd, ret;, a! _+ {- _; p( e
  23.         e2prom_s_cmd arg;+ u% S: y+ u* s6 N
  24.         unsigned char buf[0x18];: i) \7 j! n# @& s4 t; u; E
  25. ) o6 }* r9 N( j) t' I+ O1 O
  26.         fd = open(E2PROM_DEVICE, O_RDWR);- w  {+ F' i4 \4 Z( A
  27.         if (fd  < 0) {
    2 S% q4 K3 U4 m; u0 M% Q- v: _
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ g) b$ L& K: C1 V' _
  29.                 return -1;" b1 @! O* E% [8 H$ v
  30.         }
    * n# y' {+ W* [# x
  31.         arg.sub_addr_count      = 2;* ^  i& S: P: z" M; ~
  32.         arg.data_count          = 0x18;
    9 F& ^5 j& O. b5 b; V' V& M
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    : x9 v9 g9 j6 x+ Z6 ^" B
  34.         arg.e2prom_cmd_data     = buf;8 u6 O4 @3 F9 E# N
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);! b9 V4 l: u" A! }, C# ~. A% U
  36.         if (ret != 0) {. b) A% W$ R! a5 `6 v6 U
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    5 i; h$ ]( l  ^* o5 L+ t
  38.                 return -1;$ w! M' x  z4 q5 @9 A0 c3 `) d
  39.         }
    9 {$ v: X2 R# v' `
  40.         memcpy(mac, buf, 6);
    3 Q' y; W, g0 v# }1 z+ k" o
  41.         memcpy(stbid, &buf[6], 18);
    $ k+ u! x" b* L9 f7 @5 L, i3 k/ t
  42.         stbid[18] = '\0';1 C6 l8 C3 [7 L* u1 u! R- s4 s0 O

  43. 4 [0 {* `$ Z- c( T
  44.         return 0;0 P& M' \  E3 p, `! |
  45. }
    + Z  p( E8 `# Q+ B7 w  o7 N  e

  46. + t' C2 O/ T/ {3 i/ t3 @0 Q1 J
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)! A* a. t9 I. P% g) ^3 F1 e+ A5 |) _
  48. {
    / R0 \& `' h( n. O. G
  49.         int fd, ret;. ^7 Z' E' S- F. X5 F" j) e# `8 _. o5 H
  50.         e2prom_s_cmd arg;
    ) k+ u! g1 y/ ?" g+ O( t/ M* f
  51.         unsigned char buf[0x18];/ Q* c3 g) e5 {* H7 v- h( \

  52. ; Q" N; m, k/ n% C" f
  53.         memcpy(buf, mac, 6);" g0 N! R4 E5 w
  54.         memcpy(&buf[6], stbid, 18);' z! m1 o2 `& g' r5 N
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / ~) u# w0 Q; N$ A' F" C
  56.         if (fd  < 0) {" U+ N' x  l6 L$ ?  E+ X
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 N" }. Y9 P9 i" D* F
  58.                 return -1;! ~8 M9 g. G: n" t7 i" L* |3 b
  59.         }! H) n7 h8 J* H1 [
  60.         arg.sub_addr_count      = 2;
    ' w! V( j0 ~* ]0 [
  61.         arg.data_count          = 0x18;
    ! c" D" C7 v' c& C
  62.         arg.e2prom_cmd_sub_addr = 0x290;) v- H( R$ B& q5 S- e
  63.         arg.e2prom_cmd_data     = buf;
    2 c: m% Y; p& q$ h9 `
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);0 C6 c, O* B, O( n# v4 K1 @( ]+ M7 U& V
  65.         if (ret != 0) {$ r' n% f1 A3 E9 m
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);! b' a0 Z3 J, M+ r* P1 d
  67.                 return -1;
    7 W& W% }* |) B) H# K
  68.         }6 n# F% k6 w4 d( G! B( C" D2 j

  69. 2 W$ @! @3 I: ^/ x! e& w
  70.         return 0;
    ( o& |/ `* m2 o$ h- Z2 O! h
  71. }
    * J1 A5 C& \1 h2 z4 k
  72. $ @# `; @) Q! o
  73. int main(), Z( c0 h; ?1 U: v/ L+ x! ~
  74. {5 M" T  O6 V5 h4 o
  75.         char c;
    - F6 K2 m" ?! o1 V
  76.         int i, macs[6];
    ( y3 ]9 b( V( |+ {( d' _) V
  77.         unsigned char mac[6];
    $ [! ]* b- H2 x) L$ y
  78.         unsigned char stbid[256];
    ; Y* i! v1 H7 ^: Q6 f' N
  79. # k5 N7 g1 L& n6 ]" V, Z2 m
  80.         if (readparam(mac, stbid) < 0): R8 b0 ?( z1 W: l+ R* f" \6 W: E  H
  81.                 return 1;
    ; l$ h' W# v% i7 W8 g
  82. ! g5 S. \1 V% }. t1 e+ Z+ G
  83.         printf("Current parameters: \n");- D4 o4 s) c) w/ l. }
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 k- w6 `1 Q) ]9 p& O& e0 y
  85.         printf("  STBID: %s\n", stbid);( f' l3 u$ c# s, P! b7 O6 ?" Z0 P9 X
  86.        
    8 r  @8 ~) _% Y9 U; y. j
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");* k3 P1 N$ y. y% D$ p$ g
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 m% U7 M( o) E% }* Q4 r
  89.                 printf("Input MAC error\n");2 T, N9 i, P$ X4 W
  90.                 return 1;
    1 w: |4 d3 I9 N- t) N
  91.         }; c- b+ c1 Z) ~$ i) ?  L0 Q' C# K0 a$ T
  92.         for (i=0; i<6; i++)mac[i] = macs[i];5 s0 n5 r& K  |
  93.         printf("\nPlease input new STBID: ");! h, l1 j. e  w* A0 L* R2 t
  94.         scanf("%s", stbid);- Z' W0 e+ g+ m( C
  95.         if (strlen(stbid) != 18) {
    " j2 i0 ]0 \% F! e7 z
  96.                 printf("Invalid stbid\n");
    % \3 R# `7 r4 x3 I, x  g
  97.                 return 1;
    ) \( S  Y" ?- b/ _1 h
  98.         }
    9 I: G7 g/ n4 ?% C( u7 x
  99.         printf("\nNew parameters: \n");
    - ], w2 A6 |! F' j. O
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 Q9 f% @. L/ n& w+ W& f
  101.         printf("  STBID: %s\n", stbid);& R% L; A  b  H* n% w, s

  102. ! q8 ?0 m" E* h. V- y& Q
  103.         printf("\nDo you want to change paramemters? (y/N) ");8 Q8 f& w1 x5 f8 O. _1 D: S
  104.         for (;;) {' \3 a2 q0 b* E. ]
  105.                 c = getchar();
    6 u$ Z) ]8 s6 c: `
  106.                 if (c == 'y' || c == 'Y')
    1 u( l4 R  [9 @+ F6 Z
  107.                         break;
    1 x# K7 J1 d+ }
  108.                 if (c == 'n' || c == 'N') {
    4 w+ Y: T2 F9 ~9 W. m
  109.                         printf("\nAborted.\n");
    9 l; w  m1 r- f8 o
  110.                         return 1;' H7 {% T) x  P% G+ V2 z
  111.                 }& t- x# |7 j, g( W# c7 n
  112.         }$ q+ p( x1 m  w4 u* t
  113.         if (writeparam(mac, stbid) == 0) & P2 L* l! b. z. k# A! |
  114.                 printf("Parameters changed.\n");' ]+ j/ |) `: S; p! y9 L
  115. : v* B: k  k2 \* x: c0 v) B! X
  116.         return 0;; r% o0 \0 w' K: S  s
  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
% ]" X6 `  A& Q) B* }' x  a在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

7 C4 z* p& Q0 `* k: }% ?你用的编译命令行格式是什么?& m; M6 {5 s9 j4 C
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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