找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15339|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr9 O  \: L; q. ?  ^* c9 M
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ( a" W' c! p/ I% ^* B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:+ W6 p( o( \2 U! @: c
usage: himr <address> <value>. sample: himr 0x80040000 0x00 T9 q0 ]2 X, O9 Z+ A7 q
; i$ c. T/ U& g
. i! [) ?; t9 b- `/ ?' |+ h
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
. s- @5 u& w% m; |' r
1 C9 D2 E3 ~  G3 a3 |0 X补充内容 (2012-3-8 09:42):, Y8 R9 d5 m4 f2 E1 O9 q' f, a
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
  @8 `) |7 k6 G7 A$ N# {这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
6 ~, G* `6 k3 i+ k+ @2 ^5 [1 f
$ R8 M' K$ C- j! L: ahimr <address> <value>. sample: himr 0x80040000 0x0! s' _8 d1 w0 y" ~, j! r
  l0 U7 m1 `' L/ ]% v  K; P
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& U; X8 o6 ]9 B; Zhimr 0x80040000 0x00
0 A' G9 [' R. P) D3 r4 G& Qhimr 0x80040001 0x11  M4 R4 p7 ~/ m; H) u" P7 b3 v' [
himr 0x80040002 0x22' t# d" S' Y& a5 A9 R
himr 0x80040003 0x33! t) S! I( \% }0 d3 E& E' n$ k. h
himr 0x80040004 0x44
& V. j7 q" C1 l8 m+ jhimr 0x80040005 0x55
* m! b' W5 j: `
, |, b; y  x4 dSN也是类似。
  ^- f  v$ X% D+ l- P; ^, ?# G' n- Z1 y& f- M( c% {3 T+ G
现在主要是,谁告诉我们MAC和SN的地址?
& C( X* ~+ `4 D4 ~( U7 r8 t, [
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
! v4 r& Y( U' l, y6 J, T: u  g, i( ~一直想找到运程修改MAC和SN的办法,苦于无解啊

8 P! ^8 C9 P1 D- m- A源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 % `7 S$ I8 ?4 g9 |; E
& h3 E( }; _& w$ J: l3 b4 T
修改的代码早有了。到今天不会编译。' F) g% q% V; r( D% i
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    7 p3 g% v/ E3 x4 m* \) m
  2. #include <malloc.h>- _8 j( |" a9 h' d$ n- ]' j
  3. #include <sys/types.h>% c" q& U6 S: m: [  \: @
  4. #include <sys/stat.h>
    3 S8 l7 ^2 A& c( D
  5. #include <sys/ioctl.h>) n  R  }3 u- `9 r# I! [& }2 M
  6. #include <stdio.h>; L6 M: v/ C5 b/ \4 O' `6 M) [
  7. #include <string.h>+ |  r0 e! ^0 |8 e1 q  w; G

  8. 1 A! P9 I) ]+ D5 |6 p7 L
  9. typedef struct {) P; k6 F* z/ O, i7 Z; m- l; ^
  10.         unsigned int        e2prom_cmd_sub_addr;
    * h, g* I8 m: }# I
  11.         unsigned int        sub_addr_count;
    - o. L! w0 l$ j5 Y, t( G# [1 ?. \
  12.         unsigned char*        e2prom_cmd_data;7 x& k; k/ K% F9 ?* x& |
  13.         unsigned int        data_count;
    8 n# Q2 p0 S5 }' {! ~
  14. } e2prom_s_cmd;8 r8 a% K, L3 `" w0 S, U
  15. & P, i+ _2 j! R* U$ E" q
  16. #define E2PROM_CMD_READ 1
      u( ^3 @4 A" Z+ n7 h
  17. #define E2PROM_CMD_WRITE 24 ]  R0 ^& T9 M' @9 |% i  H) v
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    : C& u5 j  m5 Q7 e
  19. ! s; `) |2 V, u; c! E/ t
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    3 q+ b0 ?  h2 ?  a
  21. {
    + E( R- Z5 M  z% n) q- i
  22.         int fd, ret;
    9 S' Y. W8 {% c
  23.         e2prom_s_cmd arg;
    , ~1 B5 W9 A9 V) ]" l
  24.         unsigned char buf[0x18];
    & d! |# [) u3 Q" Z/ j
  25.   w7 f: a/ u; b* p
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
      C" @( r* N3 B) A& R! n1 V  l
  27.         if (fd  < 0) {
    5 u0 ?, p) q( F) d, }$ Q4 W2 d
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 z( w& G2 N+ Q. A5 e8 W
  29.                 return -1;2 _% ]6 ]' {* t% {9 ^- c
  30.         }
    ( ~: I8 h4 o( d- L3 z8 n
  31.         arg.sub_addr_count      = 2;, }0 n6 E+ |; q$ ]' O$ E
  32.         arg.data_count          = 0x18;
    ; h, }/ w8 W0 x! u4 ^. P
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    2 k3 F! _/ @) C* T* N4 w* m4 m
  34.         arg.e2prom_cmd_data     = buf;# ]) z8 k% t- g* c5 Q( o
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    - h0 m3 ~! }$ ^
  36.         if (ret != 0) {: E7 Y. \/ q8 a. h+ G9 d
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    1 C9 v$ q: d, u9 r
  38.                 return -1;5 G. X9 W% ^' Q! m, p  e/ P8 g+ ~- L" r
  39.         }
    . w+ X( N: G: @% f) Z
  40.         memcpy(mac, buf, 6);0 K0 [+ g+ Q% `' D" C4 s: ^/ W
  41.         memcpy(stbid, &buf[6], 18);
    + B( e9 _: Q' M- p1 E" @
  42.         stbid[18] = '\0';+ h7 q& J: V  V4 Z3 _. c$ T
  43. ; Y" [( b8 F4 e# z# \3 E
  44.         return 0;6 [0 j7 K8 U( B
  45. }
    / ]5 H- S7 R1 e9 ~+ y

  46. & e2 ~6 P1 K+ R1 {
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)/ h$ K$ _* A1 j* b7 N% _3 D
  48. {
    6 M9 \# u+ l) _! q
  49.         int fd, ret;
    3 J, o- _" o8 e$ T& O% o, }( x
  50.         e2prom_s_cmd arg;
    5 y  j5 v+ r& g; Q8 c8 T' [0 Q
  51.         unsigned char buf[0x18];
    $ i$ t0 ?8 y  N* v$ Q6 Z) I

  52. 7 n% l5 G5 P& p! R
  53.         memcpy(buf, mac, 6);5 ~8 j2 m% P, C8 V4 |* C; W: G3 e& _
  54.         memcpy(&buf[6], stbid, 18);
    4 x' L2 M7 t2 e& \: z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; M5 p. z- l2 K5 }4 A# F
  56.         if (fd  < 0) {) Q' U7 U; b4 T9 o: I) p$ t# U
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ X# |8 }: w. H% ?( D
  58.                 return -1;1 m* X* o( h" E8 z" D. Y- x; O
  59.         }7 z" @6 Q) C1 t$ |
  60.         arg.sub_addr_count      = 2;
    8 D- `9 T0 Y2 h% i3 ]
  61.         arg.data_count          = 0x18;) `3 K8 W$ P5 ?4 N/ d
  62.         arg.e2prom_cmd_sub_addr = 0x290;; T% I$ N3 p& ~( F
  63.         arg.e2prom_cmd_data     = buf;  z. \3 f. ~1 B
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    6 C$ P. z. K# h( j1 ?
  65.         if (ret != 0) {3 n2 ^( I( c1 f1 i
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);! Z2 B0 O$ V+ h9 v7 k
  67.                 return -1;
    2 X# ?$ N; d% }* [9 p1 u% [
  68.         }
    * c+ n  I; [' @0 D

  69. ) Z) b+ \( {% F1 E9 f& ~& ]
  70.         return 0;* e! G. L; Q$ T- d
  71. }
    : T8 B, I4 |9 M9 e

  72. ) X$ o. H+ R0 D, R% r# i8 l, H( x
  73. int main()
    $ F) [. l3 H. K* p
  74. {
    ! [) j. n) V' z" o7 X
  75.         char c;- ?* e& W! E0 S' G( H& ~- `
  76.         int i, macs[6];
    $ z0 k; @) L( ?4 T; N  M
  77.         unsigned char mac[6];
    + E) g( O+ [: I
  78.         unsigned char stbid[256];
    8 D; Z% q* ?7 g& v& ^- u4 D; r
  79. * b# e& B0 e- D( |5 S* E
  80.         if (readparam(mac, stbid) < 0)* u+ o2 y* y: j1 E2 G- @
  81.                 return 1;
    & ^2 d% ~4 z! n* i) q+ h

  82. " R0 u& K9 u1 [6 `1 ^: m5 `
  83.         printf("Current parameters: \n");
    $ \6 ~/ h* B' K1 \& O' g! y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ C" l$ T3 Y% O0 P; y, R
  85.         printf("  STBID: %s\n", stbid);5 k; I/ e& k0 s3 T
  86.        
    * R% ^% k: F# {8 k/ q$ u
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");: @( U; \+ Y$ P+ L* p6 H
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) P3 B) {" R, u+ H* h  ]
  89.                 printf("Input MAC error\n");( j- n+ @; |# ^# g9 C7 w
  90.                 return 1;
    ; F8 C% a5 z" e$ r" |
  91.         }
    : P/ n" x' l. H/ O
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 }0 e7 X( g* ], |* h6 h2 L
  93.         printf("\nPlease input new STBID: ");
    $ L; p" J5 `9 {8 x2 j& v8 L
  94.         scanf("%s", stbid);
    . f- x+ l# D* s# c# v% i1 \1 T
  95.         if (strlen(stbid) != 18) {
    3 L+ Q# K! `; O1 U" H
  96.                 printf("Invalid stbid\n");, S) Q3 L( r3 W3 }1 _
  97.                 return 1;9 u3 r1 h, O- N" r" M9 j+ o
  98.         }+ ?, h& p& e) n8 R# _( }. c: |% j  R9 o
  99.         printf("\nNew parameters: \n");' b0 b1 t2 ~3 f: P+ |
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: V  H% x1 g3 }8 B9 ^0 z
  101.         printf("  STBID: %s\n", stbid);
    2 j, d! z& b  L
  102. + V. X+ z# p" z7 y0 t% L; j
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 s6 d0 T: I( d' X5 s: V
  104.         for (;;) {
    : b4 T- k. a' o7 h5 B: R7 Y
  105.                 c = getchar();
    8 T4 k* q* M( K# H" G
  106.                 if (c == 'y' || c == 'Y')
    1 \5 p$ V* ?% a
  107.                         break;: N1 L0 W1 B' F/ m
  108.                 if (c == 'n' || c == 'N') {% b% |$ l4 ^2 J+ ]6 F
  109.                         printf("\nAborted.\n");
    ! q$ T0 H2 u6 P" m+ d0 k0 d  A4 r
  110.                         return 1;
    5 R$ ^9 G  O' y" B$ A, ]% p
  111.                 }
    9 _  |4 u& S' D5 E- K
  112.         }  a" ~& r, F7 f% f4 d
  113.         if (writeparam(mac, stbid) == 0)
    0 C- i' ?* h" A' N( o6 ~6 [
  114.                 printf("Parameters changed.\n");
    * X% s# V  @; i1 [( u, x
  115. 5 W; g+ b% Z: H2 [, A
  116.         return 0;3 S6 O0 h; q% L7 D. R# 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 ! `" b4 Q9 R7 I0 J$ {# L; e
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
9 o9 i+ D2 ^+ h- P/ {
你用的编译命令行格式是什么?; N4 a) |2 h, s4 x. S
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-1-23 23:59 , Processed in 0.059022 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表