查看: 15996|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    + N" l: O% `/ v; y. _% h
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig& R$ Z* c4 e1 R% K, X
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:& Y* ~/ c- E7 p$ H9 q: B6 U
usage: himr <address> <value>. sample: himr 0x80040000 0x03 l0 t" ?! w( X7 H/ s+ S; l
5 |+ g; Y' w: `* T: N) Y6 M
$ ?( R) M: I$ D4 t9 d
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?) R, F4 [' D# _9 @

2 J) p: G7 `- x% B  k' S补充内容 (2012-3-8 09:42):- ?" G3 Y0 M/ s3 d
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
- _7 I7 U6 L  _6 a- w, o, Z这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
- X3 G) N* O8 Q$ n  `+ B8 p/ n% A, S1 l+ v' J  _" v; t9 L; b3 Q
himr <address> <value>. sample: himr 0x80040000 0x0) w* @0 E% L5 x+ w& B
& b$ V- K+ [" o! u0 V8 h0 l# Q9 @
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# g2 G* r% {! f3 D, E% l
himr 0x80040000 0x00
6 [+ n% N2 t+ ?; _, [himr 0x80040001 0x111 M9 g. G# _2 c
himr 0x80040002 0x22
9 G% t$ {) L. _7 Yhimr 0x80040003 0x332 @, e8 l* p$ m0 U* C4 c
himr 0x80040004 0x447 E' P* _4 X* ]7 n6 W# X
himr 0x80040005 0x55. l  B7 p# N1 F" t0 S; i

( v2 F$ P3 k0 L# T, s( n+ jSN也是类似。
" ^, ~! \6 f, n0 g
* T: K8 |) J: K5 v/ O现在主要是,谁告诉我们MAC和SN的地址?0 L% B  J* e3 }
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 - ]" R7 c8 x3 o' |  ]0 k
一直想找到运程修改MAC和SN的办法,苦于无解啊
. {+ y1 Q- g8 N2 q
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
* T, \  S# k6 }, {* t* x$ ?3 z% o& `! p2 f' ?) A
修改的代码早有了。到今天不会编译。
  E$ o! J3 b0 f# v# S( t+ C8 d需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>9 b4 i# m$ T  ]' w
  2. #include <malloc.h>
      A( u: t8 G$ f2 y6 m/ }
  3. #include <sys/types.h>
    ' W. {* @2 f& X0 c# t
  4. #include <sys/stat.h>  Y& g7 ]8 ~* a: ~
  5. #include <sys/ioctl.h>8 I' n9 h- a. D9 y' E
  6. #include <stdio.h>
    ) B2 d, \1 P4 `
  7. #include <string.h>  Q: K$ y% ]5 K2 L6 B
  8. 7 P& a% x9 Q" C/ l1 [
  9. typedef struct {
    4 g8 H3 x; ~* ]1 E% C  I
  10.         unsigned int        e2prom_cmd_sub_addr;
    ; x0 e& P+ }, p0 [* u' V
  11.         unsigned int        sub_addr_count;5 y  v; {! w$ K- t; O: I
  12.         unsigned char*        e2prom_cmd_data;
    ; [' i+ {' r$ ?) j7 M2 s
  13.         unsigned int        data_count;
    % B" p) c: j  M: O+ b1 ?
  14. } e2prom_s_cmd;8 A! d, y5 Q( V- {1 r
  15. + r9 _$ A* S1 q
  16. #define E2PROM_CMD_READ 1
    , H+ }8 u6 d3 [1 s- U* _  }
  17. #define E2PROM_CMD_WRITE 2( E5 Z$ k/ |4 p
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"( I" v( U1 P4 K4 G! F

  19. / D2 w! @/ J( b. C3 K9 A, c3 w$ G
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ; T* ?- z. @+ h6 J
  21. {
    6 j/ F3 Y6 J" A( i* T1 V) ]
  22.         int fd, ret;7 m. U/ `+ \& f/ e; ~: {  z
  23.         e2prom_s_cmd arg;
    - P! {6 [4 a$ Z$ b3 r1 I1 h9 F
  24.         unsigned char buf[0x18];) z  {( M- N: {; E
  25. 2 I. T& l; d$ T, m; B. ]$ @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);/ [- ~& {8 |1 K1 a" u
  27.         if (fd  < 0) {% R$ U! Y/ I& q! ~
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + W9 G; I, @# A5 ~$ J
  29.                 return -1;
    ) d4 P0 J& ?$ O4 f1 L5 u3 u
  30.         }
    ! z# q3 Y3 @5 Q1 Q$ z
  31.         arg.sub_addr_count      = 2;! q; |' i9 n& }
  32.         arg.data_count          = 0x18;7 g" l' g' U2 G( ^! o, B
  33.         arg.e2prom_cmd_sub_addr = 0x290;& _$ r; S2 l: k. `7 |6 |, t" x
  34.         arg.e2prom_cmd_data     = buf;
    - _4 x+ E' ~+ W" _) S# O
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);0 Y' ~) b5 }) k$ _( s6 E
  36.         if (ret != 0) {
    ; O3 y/ y2 g- @( F
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);* X4 S) h& D+ Z& k% J" |! [+ Q! c
  38.                 return -1;* i9 m9 u. D, O
  39.         }. f9 u" a. Q7 f+ `4 n/ L& f
  40.         memcpy(mac, buf, 6);' S3 H, v8 s% {$ B( r1 N& q
  41.         memcpy(stbid, &buf[6], 18);
    5 ^5 q: [2 v, a  X  s! r9 p0 x( r
  42.         stbid[18] = '\0';( k6 c- w. e8 o5 o& N

  43. 5 f5 a7 n& q1 d
  44.         return 0;
    0 i3 R: u: ]  z/ w- w- Y
  45. }1 D. l% C) p: Y6 u( ]0 ]$ T

  46. " G( h$ p/ a4 X& \- L6 d: O
  47. static int writeparam(unsigned char *mac, unsigned char *stbid), X' @/ R* `+ G/ w' F8 V: H# B- s) j
  48. {
    " j$ w7 g7 ^9 f, H- }
  49.         int fd, ret;
    6 Q: O. H0 A1 I# y+ Q
  50.         e2prom_s_cmd arg;9 n. ?& I: w$ Z+ N- ?/ i
  51.         unsigned char buf[0x18];
    . @$ P+ p% d; d3 k8 q
  52. ! ~  r8 V/ _! ]. h7 a
  53.         memcpy(buf, mac, 6);
      U  N& ?; m4 K: |8 X2 N
  54.         memcpy(&buf[6], stbid, 18);8 U. L1 \- }: A$ r# X4 @. k/ ?$ S1 C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 A$ B4 c$ z) g
  56.         if (fd  < 0) {
    0 w& |$ z% U# b# t1 A' X
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' k3 @3 Y- f: o* `7 h
  58.                 return -1;$ i2 T6 `+ [& ^' h& n8 {
  59.         }
    & o) ?4 L. Q  r# R  x
  60.         arg.sub_addr_count      = 2;/ d$ T1 ^7 ~6 ~8 e
  61.         arg.data_count          = 0x18;
    & d( ]& O) V& }& D- D
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    . q, D4 }1 `. D4 Z9 m
  63.         arg.e2prom_cmd_data     = buf;; D1 ?8 m# V3 J& d% a
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);$ y/ r; f  q) `! @# x# T1 n
  65.         if (ret != 0) {
    / C' ^6 q% j- l6 C" z7 }
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);( x  q6 ]7 p% e6 k# F) |
  67.                 return -1;& d9 Y7 m8 C. o) u! Y0 s
  68.         }% f% H) @% m0 e# k) s1 J3 e" z

  69. $ u% j  r; W/ z& }1 q! g6 C
  70.         return 0;
    * O. w9 `+ G5 K/ [" ?& h  v$ Q
  71. }( x/ e. M; F1 G8 g# l* L2 D; e
  72. 4 {5 k1 D2 _' X9 z) z$ B
  73. int main()
    4 X* \% B8 Y$ j2 H. ?! {
  74. {
    * T! W) c9 j4 E( H8 X  O: R) m
  75.         char c;: X7 j/ ^& k* L
  76.         int i, macs[6];
    % A# c7 h* m" h; g
  77.         unsigned char mac[6];
    $ x$ c7 x" V( g5 u2 s7 @- W3 Q& o
  78.         unsigned char stbid[256];
    1 e4 x' i, {5 \/ c8 K) n* D+ D

  79. , q. |+ g2 c* F1 g
  80.         if (readparam(mac, stbid) < 0)
    * q7 u8 y8 S7 t+ N
  81.                 return 1;4 a# b1 v# f) Y) `3 V4 v8 ]

  82. 3 G$ Z  b' R4 {0 ~- e4 F
  83.         printf("Current parameters: \n");+ D7 S) U" P- t2 z1 I8 W# @
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  e4 |, P0 V* f1 d1 E
  85.         printf("  STBID: %s\n", stbid);
    8 X5 Q. g/ j; N: t5 O* t+ @4 g
  86.        
    4 s0 _3 u- U/ m
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    / k9 u3 u8 b$ V$ w  @
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    $ V/ n& p3 {/ Q0 C! U
  89.                 printf("Input MAC error\n");9 `9 |4 t; n( K3 ^7 x7 J
  90.                 return 1;( D: J; C- a- n: A$ Y
  91.         }' T7 [+ o& U/ S5 M( @9 }
  92.         for (i=0; i<6; i++)mac[i] = macs[i];0 q$ P4 g: Q, n& R- O& g+ k; H
  93.         printf("\nPlease input new STBID: ");  i5 |0 Q8 ?% V( A9 j
  94.         scanf("%s", stbid);
    1 Y8 z  d9 j& b  o
  95.         if (strlen(stbid) != 18) {1 P7 }+ F0 |( S
  96.                 printf("Invalid stbid\n");8 W9 p6 _4 n+ ?
  97.                 return 1;
    + T# z+ [4 T3 L
  98.         }# I- ~6 l3 H" P6 T1 \3 N/ x8 @3 X! y
  99.         printf("\nNew parameters: \n");
    0 Q+ C: q9 f6 I/ `  |. x
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 f' |: o% z( C8 q' z2 a. M
  101.         printf("  STBID: %s\n", stbid);
    % l( i5 k' W3 P9 R4 T6 |  q
  102. : z% d5 x; m' F: G5 S) V- e1 U
  103.         printf("\nDo you want to change paramemters? (y/N) ");. g( O3 \: A/ W" r
  104.         for (;;) {
    ; |! G* H) t. C) ?
  105.                 c = getchar();
    / E, s% k6 r! E4 j9 @
  106.                 if (c == 'y' || c == 'Y')6 P6 J8 Y' o7 |2 R; t
  107.                         break;/ J+ u# ]: ^: o
  108.                 if (c == 'n' || c == 'N') {2 G& i$ T# \  F# i4 O0 Q) R
  109.                         printf("\nAborted.\n");. C: f" h! G9 V/ l; h
  110.                         return 1;. {; R7 Y3 O5 T  e0 [
  111.                 }
    3 w" `6 O8 o% j# s) b
  112.         }6 S1 z' V. m9 n4 H( ~; H/ K8 Q- ~( I
  113.         if (writeparam(mac, stbid) == 0)
    8 |( p  ^: O( m; a1 ^
  114.                 printf("Parameters changed.\n");
    9 a, Q; Q; t6 I! ]* l2 y% _, B5 f" q

  115. 6 c0 T! J1 C: a7 v' I% |: k
  116.         return 0;
    + `0 c$ G7 W# ?; ?0 V6 O$ {6 y3 t4 |
  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 4 c3 a- F% c3 H4 L* r
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
4 N0 P; y  Y( }) u! |9 r1 l' P
你用的编译命令行格式是什么?$ z, O0 [9 j: R% ]; u2 W3 E4 p4 n3 e& B
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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