查看: 17236|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr( h& V% b2 w! x# ]8 C
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 I. _8 ~4 p+ n; f. Y) u, z! |# y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:+ t) Q8 t9 ?8 r( ^0 [
usage: himr <address> <value>. sample: himr 0x80040000 0x0' _7 k1 U# e, o8 b( W, h& t
) p* @6 ?% J. A0 V" l& U4 |
& H- w: k) n* M8 w
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?, y6 J5 S, L8 P- R7 F
1 A6 W- y! Q( i
补充内容 (2012-3-8 09:42):
! T5 Z, P; V. I9 Q7 v' C' |http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
' B3 v# E* V: k8 o- t7 s这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
* A: j' L2 Q" T/ P- i
8 C3 U1 v% x, H( F) ghimr <address> <value>. sample: himr 0x80040000 0x0. r9 X: Z6 A$ W; N' ?+ B
& m0 z7 I: ^9 a7 K- o2 a7 T
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。0 Y+ `8 Z/ A4 b$ D
himr 0x80040000 0x000 t& K/ ~: o; Y/ ~" a" K' [! E$ d
himr 0x80040001 0x115 Y( H% z- ~1 i) O+ O
himr 0x80040002 0x22/ ~. m: m" O  m' D
himr 0x80040003 0x33/ ^2 |. V" g" V- D- w0 k: i5 U$ M
himr 0x80040004 0x44! ]1 s( k$ q: N: k8 p  W) l
himr 0x80040005 0x55$ `2 j& J1 Z  }2 [
( X4 Q+ E2 o5 L! k
SN也是类似。
# U8 u! G1 h% k1 P$ R2 a, G- }& K8 M9 a- m5 S; g* k
现在主要是,谁告诉我们MAC和SN的地址?. ?! r( b# p6 K/ Y2 W, _
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 $ x' N5 U' C% A. E$ y5 d4 R
一直想找到运程修改MAC和SN的办法,苦于无解啊

/ C7 \# p7 F. U+ d5 G% N( |源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 p9 a6 H# G0 m) L
( m( P4 @$ f! \. M! J% C$ G: K修改的代码早有了。到今天不会编译。
3 {" A% [# s$ n- B需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    5 e, T  p7 Y4 t! i
  2. #include <malloc.h>
    6 ?* V+ F2 h8 D" v9 G
  3. #include <sys/types.h>, x0 s1 n5 M5 {; x
  4. #include <sys/stat.h>7 _6 P- J" Z2 E0 ?2 D, Q
  5. #include <sys/ioctl.h>
    7 ^. h# \( o9 A& W; L; f& Y
  6. #include <stdio.h>5 Z. ^* s% ]/ Z' M+ T
  7. #include <string.h>
    # k0 P9 J+ R) s

  8. ' F. u- `% b% z  O: f3 j+ Y
  9. typedef struct {5 b! s/ Y* }1 C' k% E  |
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 ^( t  |' U& {' f/ u! b
  11.         unsigned int        sub_addr_count;. K8 p- {8 j& k* ?/ ?1 Q/ m0 Z
  12.         unsigned char*        e2prom_cmd_data;
    ' A8 c. j5 L: k/ @+ B
  13.         unsigned int        data_count;( a: D" |" [  N6 E3 C1 I" n
  14. } e2prom_s_cmd;
    # m: l2 l1 \/ p* r. W9 \
  15. 7 T* [* u2 L4 K/ W8 Z
  16. #define E2PROM_CMD_READ 16 c; k4 l/ ?/ f  _2 K; U
  17. #define E2PROM_CMD_WRITE 2! W4 o6 Y3 h) c' ^: Q3 H# ]/ @7 v
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    7 `$ ~8 n4 T# j8 ~5 M% O

  19. * o7 O& K4 I& K( k
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    0 W# C  N: q& q) G1 s
  21. {
    ( e" \/ A: e) Z6 y
  22.         int fd, ret;
    " H: M5 P( ?6 q% a6 a6 \; o! A
  23.         e2prom_s_cmd arg;5 C" U& R8 ?) j
  24.         unsigned char buf[0x18];
    $ r& ^6 f, [& i. K2 x
  25. / p9 i6 \3 s9 c6 b
  26.         fd = open(E2PROM_DEVICE, O_RDWR);0 I$ b. ~% ]. k! s5 ]: }, J6 D
  27.         if (fd  < 0) {4 o$ p% K& X! }9 N6 l/ J7 m
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ E6 \  k8 V3 X& T
  29.                 return -1;) v* Z" W. L6 {
  30.         }( t2 H& z6 Z1 M% E. g: r# Z) T" E! Q
  31.         arg.sub_addr_count      = 2;" A3 _( s* L3 D4 j- s# H. t
  32.         arg.data_count          = 0x18;) q9 d* w% y4 J4 H, k) {5 O  a
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ' r  u1 E) x( I  V9 F! l
  34.         arg.e2prom_cmd_data     = buf;, h. X  `8 |& h
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);1 m2 D& z5 H) ~& `3 B, e0 Q
  36.         if (ret != 0) {6 E: _& j! Z4 |& W# u
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);4 L# {  y- j9 o9 _# F' o' K
  38.                 return -1;- p$ w0 @1 ]" v! G
  39.         }
    0 k  D! R7 L+ @1 O
  40.         memcpy(mac, buf, 6);" _+ X+ K9 ]2 u- C
  41.         memcpy(stbid, &buf[6], 18);# F% m8 k1 x& U, @# }- \9 @
  42.         stbid[18] = '\0';
    0 E+ f+ \2 i! J8 G( }: A3 U. R4 J! Y

  43. & C2 M0 s$ c2 W' r" m' r/ u
  44.         return 0;' [6 T! }( ]) f! t, P1 Q& ?" S+ ~- X
  45. }7 g2 N) f- U) ^$ v

  46. 4 l( [* m) t! ]
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    6 ^% _* Y7 d' _+ B; V9 k+ Y
  48. {
      E, P* J- G$ o# F" y
  49.         int fd, ret;
    , k4 E/ @4 g0 ?. [4 e0 w
  50.         e2prom_s_cmd arg;; l5 L& p& I+ s: p! D9 \4 J
  51.         unsigned char buf[0x18];
    1 P4 \8 o& |; K! r4 J6 d

  52.   K- F& C' ~  n7 U. H7 q, k" {
  53.         memcpy(buf, mac, 6);. X9 Y  d( p# `
  54.         memcpy(&buf[6], stbid, 18);
    + f/ I5 n9 f  H/ k& y) d% ]
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    % \. a4 G- M9 K6 X& y4 S
  56.         if (fd  < 0) {  |( H; ]% Q6 _
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);% K1 _7 C% S* ?9 H) o3 h
  58.                 return -1;
    . x) T5 E  r+ c& ~, \
  59.         }7 ]- _. \4 g5 J
  60.         arg.sub_addr_count      = 2;- h. ?+ Q2 D1 U, v: g0 G
  61.         arg.data_count          = 0x18;, n" I2 }- l/ ^9 J. U+ P
  62.         arg.e2prom_cmd_sub_addr = 0x290;% P' v( b6 a( B* K
  63.         arg.e2prom_cmd_data     = buf;
    " l0 V0 x0 n, V3 B3 ^: b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    * ~" s* Q2 F* R/ _; b+ a2 S% h# r
  65.         if (ret != 0) {( [& z; J1 G- k# B) c7 s3 y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    4 V7 l$ h+ p0 }6 N
  67.                 return -1;
    7 P, {8 f5 Y. y
  68.         }
    0 }8 I6 q0 n; {' F' W$ {
  69. ! j! l! j. G5 O) [3 N$ f; q4 V* w
  70.         return 0;
    ( l3 n6 N" g0 k' ~# A) C
  71. }
    3 }# I. H2 J; [* J3 w
  72. ) x! O6 c# @) C9 ^
  73. int main()
    , f1 ~( E; t3 X) ?8 l* U1 R
  74. {
    . u! `7 A1 e/ \7 o& z  l; a' @9 v
  75.         char c;  f5 x6 n5 _+ a' y) b
  76.         int i, macs[6];
    " b; Z; S# X( R2 s& n
  77.         unsigned char mac[6];
      X# G: |* K1 i: Z9 C) u2 E& G6 X( l% W
  78.         unsigned char stbid[256];2 t9 V2 G' {; v6 N7 i6 l
  79. # r0 Y' x& ?5 W- ]% b2 t
  80.         if (readparam(mac, stbid) < 0)/ m5 I! c2 e, f
  81.                 return 1;/ U3 U$ s2 M& x! a

  82. , ^) O5 h* t! b" W2 s5 d- [) e+ J
  83.         printf("Current parameters: \n");
    / ?* G" L5 j' L7 V
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) \  o; }6 x# G" @
  85.         printf("  STBID: %s\n", stbid);2 h7 @! e1 {6 H$ y" p* k! {/ O5 ]
  86.        
    / i8 M( x# O" D( q8 G
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    3 n3 D, e$ Y8 _3 j0 P- S3 [+ O9 e# I
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    3 o5 \. F( k. |( W; w$ M
  89.                 printf("Input MAC error\n");
    ( i. f) I$ X  [0 g1 w1 r, g4 j  e
  90.                 return 1;' E* r" i: K& X; L$ b! }
  91.         }
    3 B$ K5 l  W' @  l
  92.         for (i=0; i<6; i++)mac[i] = macs[i];& o7 W+ g  `4 O. P6 F
  93.         printf("\nPlease input new STBID: ");
    % {% [  K' e# i9 v: z+ r
  94.         scanf("%s", stbid);
    ' l1 v; X* r  q# q" `+ y
  95.         if (strlen(stbid) != 18) {  s  O  f/ U% O) N
  96.                 printf("Invalid stbid\n");
    . l% @" d$ B$ v$ T8 O4 T
  97.                 return 1;
    - E4 V0 j, `5 ^
  98.         }1 U5 f( X/ r# Q' b
  99.         printf("\nNew parameters: \n");+ {" l, ]+ _" k* H1 z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 t/ H( n- h9 U" _
  101.         printf("  STBID: %s\n", stbid);4 V; P/ T  ^& r) O. R. G& S1 X
  102. ) t" T3 J0 d, U  X' E1 B
  103.         printf("\nDo you want to change paramemters? (y/N) ");. w2 {; u* S: V- a, w# D% T
  104.         for (;;) {0 R& N/ N6 r0 l6 ~
  105.                 c = getchar();: \9 L/ }3 x# W" Q" e
  106.                 if (c == 'y' || c == 'Y')! `( c7 J7 D) W9 K4 l
  107.                         break;
    / ~0 B/ D: o/ w' A3 L+ \5 X. O
  108.                 if (c == 'n' || c == 'N') {- u; Q: z7 J& s6 p
  109.                         printf("\nAborted.\n");. y9 ^" Z, d4 x  J; A: V, o1 a" L
  110.                         return 1;* j' E* I2 |* e& A: r
  111.                 }
    , k; }$ b  a( T* f9 {, K5 D
  112.         }
    0 w9 Y0 A/ |" H4 c3 p/ u: }
  113.         if (writeparam(mac, stbid) == 0) 9 @2 G8 g/ T% [, c# `
  114.                 printf("Parameters changed.\n");: _* d& h* d8 F/ E3 T

  115. : S+ m, g8 }- j3 D# f
  116.         return 0;
    ! O) Q8 G- r9 t* H/ N: ]+ h/ k
  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 5 G; d8 I) e9 W
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
2 m9 v; t& Y) W( C7 ^
你用的编译命令行格式是什么?
5 R9 p* O$ y' |. D( V& [
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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